Stm32 IO口配置和使用

发布者:幸福的家园最新更新时间:2018-08-27 来源: eefocus关键字:Stm32  IO口  配置和使用 手机看文章 扫描二维码
随时随地手机看文章

1、IO的模式

STM32 GPIO的配置种类有8种:

(1)GPIO_Mode_AIN 模拟输入 
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入 
(4)GPIO_Mode_IPU 上拉输入 
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出
(7)GPIO_Mode_AF_OD 复用开漏输出 
(8)GPIO_Mode_AF_PP 复用推挽输出


用的最多的也就是推挽输出、开漏输出、上拉输入。在这里做一个总结:
一、推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。
二、开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。开漏形式的电路有以下几个特点:
       1、利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经上拉电阻、MOSFET到GND。IC内部仅需很小的栅极驱动电流。
        2、一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的速度。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)
       3、开漏输出提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。
       4、可以将多个开漏输出连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系,即“线与”。可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。
三、浮空输入
顾名思义就是浮在空中,上面用绳子一拉就上去了,下面用绳子一拉就沉下去了。


四、上拉输入/下拉输入/模拟输入:这几个概念很好理解,从字面便能轻易读懂。
五、复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)。
************
2.io口的使用
************
2.1 IO口时钟简介:
I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口 的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声 控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。比如:
 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。
 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。
2.2配置注意事项: 
GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。
在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。
 GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。
2.3配置和使用
①配置输入的时钟
②初始化后即被激活(开启)
③如果使用该外设的输入输出管脚,则需要配置相应的GPIO端口(否则该外设对应的输入输出管脚可以做普通GPIO管脚使用)
④再对外设进行详细配置。
对应到外设的输入输出功能有下述三种情况:
一、外设对应的管脚为输出:需要根据外围电路的配置选择对应的管脚为复用功能的推挽输出或复用功能的开漏输出。
二、外设对应的管脚为输入:则根据外围电路的配置可以选择浮空输入、带上拉输入或带下拉输入。
三、ADC对应的管脚:配置管脚为模拟输入。
如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将管脚配置成复用输出功能后,如果外设没有被激活,那么它的输出将不确定。
3.1  通用IO端口(GPIO)初始化:
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | B | C, ENABLE):使能APB2总线外设时钟
 RCC_ APB2PeriphResetCmd (RCC_APB2Periph_GPIOA | B | C, DISABLE):释放GPIO复位
3.2   配置各个PIN端口(模拟输入_AIN、输入浮空_IN_FLOATING、输入上拉_IPU、输入下拉_IPD、开漏输出_OUT_OD、推挽式输出_OUT_PP、推挽式复用输出_AF_PP、开漏复用输出_AF_OD)
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); 
3.3 GPIO初始化完成


关键字:Stm32  IO口  配置和使用 引用地址:Stm32 IO口配置和使用

上一篇:STM32之IO输出方式理解
下一篇:关于STM32中PA15引脚作为普通io的使用

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

stm32 ADC知识总结(二)
关于STM32的ADC的一些重要特点需要记住: 1)STM32F103系列至少有2个ADC,这些ADC可以独立使用,也可以使用双重模式(提高采样率); 2)STM32的ADC是12位逐次逼近型的模数转换器,一共有18个通道,可以测量16个外部信号和2个内部信号源; 3)每个通道的ADC可以在单次、连续、扫描或者间断模式下进行; 4)前面讲过STM32的ADC是12位的,结果存储在16位的数据寄存器中,有4位用不到,所以ADC存在左对齐或右对齐的方式; 5)模拟看门狗允许应用程序检测输入电压是否超出用户定义的高低阈值; 6)STM32的ADC最大的转换速率为1MHz,也就是说最快转换时间为1us,为了保证ADC转换结果的
[单片机]
<font color='red'>stm32</font> ADC知识总结(二)
stm32 内存管理
分块式内存管理 分块式内存管理 1 举例 #define MEM1 0 //内部SRAM #define MEM2 1 //外部SRAM #define MEM1_BLOCK_SIZE 32 //内存块大小 32字节 #define MEM2_BLOCK_SIZE 32 #define MEM1_MAX_SIZE 10 * 1024 //10K #define MEM2_MAX_SIZE 40 * 1024 #define MEM1_TABLE_SIZE MEM1_MAX_SIZE / MEM1_BLOCK_SIZE #define MEM2_TABLE_SIZE MEM2_
[单片机]
<font color='red'>stm32</font> 内存管理
【STM32+W5500】22,W5500连接外部服务器失败,如ONENET
1,W5500连接外部服务器ONENET失败,主要是IP地址错误,推荐使用IP 183.230.40.34 ,端口80 2,在ONENET官网上面,可以看到服务器的IP地址为 ONENET HTTP服务器地址域名为:jjfarfapi.heclouds.com 端口号为80, jjfarfapi.heclouds.com 183.230.40.34 3, 与平台HTTP服务器建立HTTP连接,服务器URL:api.heclouds.com 端口号:80 api.heclouds.com 183.230.40.33 4,实际使用情况是这样的, 当ONENET的服务器IP地址为183
[单片机]
【STM32+W5500】22,W5500连接外部服务器失败,如ONENET
当前STM32几种最流行的开发环境对比
序 时间进入2020年年底,越来越多的开发者跟我一样不再满足于高级语言和WEB前后端开发,逐渐开始把玩各类MCU,MPU,FPGA等硬件产品,同时这些嵌入式开发的门槛也随着互联网的发展渐渐降低,更好地吸引了众多开发者的加入。毫无疑问,那些软硬结合、能解决实际生产生活需求的小项目,总是更能引发人们的好奇心和学习欲望。 今天我们就来谈谈当前最流行的几种STM32家族MCU的开发方案,主要向新人朋友们介绍几种集成开发环境,对于大佬们来说,如果您还在使用破解版的KEIL开发项目,不妨试试我下面提到的另外几种IDE,或许会有更好的开发体验。 Keil5 最正统,最经典的嵌入式MCU开发环境。 价格/跨平台 ★ 收费。国内由米尔科技
[单片机]
STM32之DRV8834电机驱动(PWM方式)
一、简介 本文介绍如何使用STM32通过DRV8834控制步进电机,使用PWM方式控制转动。 二、实验平台 库版本:STM32F10x_StdPeriph_Lib_V3.5.0 编译软件:MDK4.53 硬件平台:STM32开发板(主芯片stm32f103c8t6) 仿真器:JLINK 三、版权声明 四、实验前提 1、在进行本文步骤前,请先阅读以下博文: 1)《STM32之DRV8834电机驱动(IO方式)》:http://blog.csdn.net/feilusia/article/details/52853951 2、在进行本文步骤前,请先实现以下博文: 1)《STM32之系统滴答定时器》:
[单片机]
<font color='red'>STM32</font>之DRV8834电机驱动(PWM方式)
STM32备忘——GPIO的几种模式
GPIO的模式学习 GPIO的综合描述 讲述的内容比较详细 输出模式通常使用推挽输出模式:GPIO_Mode_Out_PP 只有使用输出模式时才能设置频率:GPIO_Speed 使用串口通常使用复用模式: 选择IO接口工作方式: GPIO_Mode_AIN 模拟输入 GPIO_Mode_IN_FLOATING 浮空输入 //USART串口通信输入模式 GPIO_Mode_IPD 下拉输入 //按键的输入 GPIO_Mode_IPU 上拉输入 //按键的输入 GPIO_Mode_Out_PP 推挽输出 //GPIO引脚输出模式 GPIO_Mode_Out_OD 开漏输出 GPIO_Mode_AF_PP 复用推
[单片机]
stm32调试遇到问题及解决
一、PB4始终是高电平,导致超声波传感器用不起来。 百度了一下,stm32有些管脚上电默认的功能不是通用的GPIO,比如JTAG与SWD调试管脚,所以如果想要使用这几个管脚作为通用IO口的话就必须将JTAG与SWD功能关闭,并且要开启AFIO时钟。即外设的复用IO。 加上这两句:RCC_APB2PeriphClockCmd(RCC_APBPeriph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); 二、多通道AD转换时有一个引脚的电压没接外部电流时都是一点几伏 由于AD转换需要设置引脚为模拟输入,模拟输入的引脚电压不固定空引脚大概为1/2V
[单片机]
Event Recoder调试组件在stm32上的使用
本文目标:Event_Recoder调试组件在stm32上的使用 按照本文的描述,应该可以在你所处的硬件上跑通代码。 先决条件:装有编译和集成的开发环境,比如:Keil uVision5。 板子硬件要求:无,属于调试功能。 起源 因为做产品开发,设计东西有时候考虑得多,mcu的并没有多余的串口供使用调试,在调试一些初期进行验证时,必要的调试的打印信息是需要的。 Event Recoder调试组件简介 嵌入式的Event_Recoder调试组件是一种可以在MDK开发环境下使用的高级调试工具,它可以记录软件运行的一些标志信息,并以图形化的形式显示出来。它可以帮助你了解和分析内部操作,支持Keil RTX操作系统调试以及MDK自带的
[单片机]
Event Recoder调试组件在<font color='red'>stm32</font>上的<font color='red'>使用</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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