关于STM32_IO口的基本操作

发布者:huanran最新更新时间:2021-04-06 来源: eefocus关键字:STM32  IO口  基本操作 手机看文章 扫描二维码
随时随地手机看文章

一、IO口的基本操作


(1)IO口模式:


GPIO_Mode_IN输入模式,输入3.3V或0V 的高低电平。例如按键程序就是配置称输入模式


GPIO_Mode_OUT输出模式,输出3.3V或0V 的高低电平。例如LED闪烁程序配置成输出模式。


GPIO_Mode_AF复用工作模式。例如I2C,SPI,USART。GPIO就必须配成AF模式。


GPIO_Mode_AN模拟输入模式。例如ADC程序必须配置成AN模拟量输入模式。


(2)当配置成输出模式或者AF模式时,输出类型有两种:


GPIO_OType_PP推挽输出,即可输出高电平,也可以输出低电平。


GPIO_Otype_OD开漏输出,只能输出低电平。


(3)无论是输入还是输出,都可以配置上下拉类型:


GPIO_PuPd_NOPULL不上下拉


GPIO_PuPd_UP上拉模式


GPIO_PuPd_DOWN下拉模式


(4)下面具体看下什么是推挽输出,什么是开漏输出,以及它们的特点。


推挽输出GPIO_OType_PP特点:


既可输出高电平,也可以输出低电平。如下图:



当我们将GPIO配置成低电平的,Q1截止,Q2导通,S2输出低电平;


当我们将GPIO配置成高电平的,Q1导通,Q2截止,S2输出高电平;


其实黑色区域是在单片机的内部,因此它的电流是单片机的电流,所以说它驱动能力是较弱的。


(5)开漏输出GPIO_OType_PP的特点:只能输出低电平,不能输出高电平。


其优点在于:大电流驱动能力;电平匹配;可以实现“线与”功能。


逻辑框图如下:



当往IO写0时:S1为低电平,Q1截止,因此Q2的基极就是VCC为高,Q2导通,S2输出被拉到GND,因此输出低电平。


当往IO写1时,S2为高电平,Q1导通,因此Q2的基极被拉到GND为低,Q2截止,S2输出是不确定的。


因此开漏输出只能输出低电平。S2直接从Q2的集电极引出,所以呀开漏输出也成为集电极开漏输出。


其实你也可以开漏输出高电平的。那么如何让开漏输出输高电平呢?其实很简单。(这个过渡段好苍白。。。)



只要在开漏的输出加上一个上拉电阻,就可以输出高电平了(VCC1是单片机内部电源,VCC2是外部电源),流过R3的电流是由外部电源提供,所以说这种电流可以提供较大的电流。


例如:VCC1是3.3V(开发板),VCC2是5v时S2就可以输出OV和5V,从而实现了电平转换。也就是说开漏输出有电平转换的功能。


开漏输出的应用:线与功能



只有当S1,S3,S5输入全为高电平时输出才是高电平,当S1,S3,S5,中有任意一个为低电平是输出就为低电平。这就是所谓的线与功能。


例如I2C总线各器件的SDA和SCL都是线“与”关系。


(6)IO口上下拉作用:


将不确定的信号通过一个电阻,嵌位在确定电平;


为开漏型电路输出电流通道;


在一定程度上提高系统的抗干扰;


例如串口RS485电路的方向控制。RS485电路是半双工的收发不能同时进行。


关键字:STM32  IO口  基本操作 引用地址:关于STM32_IO口的基本操作

上一篇:STM32之独立看门狗实验
下一篇:分享STM32代码读保护个人解决方案

推荐阅读最新更新时间:2024-11-13 18:43

低成本的利用单片机多余I/O口实现的温度检测电路
单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制,但那些温度检测与控制电路通常较复杂,成本也高,本文提供了一种低成本的利用单片机多余I/O口实现的温度检测电路,该电路非常简单,且易于实现,并且适用于几乎所有类型的单片机。其电路如下图所示: 图中: P1.0、P1.1和P1.2是单片机的3个I/O脚; RK为100k的精密电阻; RT为100K-精度为1%的热敏电阻; R1为100Ω的普通电阻; C1为0.1μ的瓷介电容。 其工作原理为: 1.先将P1.0、P1.1、P1.2都设为低电平输出,使C1放电至放完。 2.将P1.1、P1.2
[单片机]
低成本的利用单片机多余I/O口实现的温度检测电路
介绍在CubeMx+VS下创建STM32项目的两种方式
方法一:通过Embedded Project Wizard 提供的例程创建 优点:直接通过VS创建,配置过程简单直观 缺点:修改初始化配置麻烦,只能从例程生成(或许是我还没研究明白)... 1.创建Embedded Project Wizard项目 2.命名解决方案,指定存储路径 如果点击创建后出现下图窗口,直接OK即可 3.配置项目类型 ↑C Library Type 选择支持浮点的输出函数比较好 4.选择模板项目 5.※调试模式选择 ①将调试器连接到 电脑 ②Debug Method 选择 USB - ST-Link v2 ③配置调试选项 STM32 采用SWD 接口 模式 有关Debug P
[单片机]
介绍在CubeMx+VS下创建<font color='red'>STM32</font>项目的两种方式
linux下编写I2C驱动与stm32通信(二)
接上一篇,linux下GPIO模拟I2C驱动完成后,就是stm32的i2c配置了,由于hi3518e作为i2c的主设备,stm32则作为从设备,由于GPIO模拟i2c的从时序比模拟主时序要麻烦很多,所以采用stm32的硬件I2C。(stm32官网i2c例程主模式会莫名的卡死,从模式比较好用) 下载官网例程,将之设置为从模式,使用i2c2,将SCL,SDA,GND与hi3518e板子上GPIO模拟的SCL,SDA和GND连起来,写一个测试例程来验证双方的通信。 首先在linux下加载驱动,然后调用打开驱动,调用编写的驱动接口函数,读数据和写数据。驱动接口代码如下: #include stdio.h #include
[单片机]
STM32 ST-LINK Utility介绍、下载、安装、使用方法
Ⅰ、写在前面 本文讲述的内容是STM32 ST-LINK Utility介绍、下载、安装、使用方法,如需要了解更多关于STM32相关的文章,可以到我博客,或微信公众号查看并下载。 STM32 ST-LINK Utility这个软件工具其实主要就是配套“ST-LINK”这个下载工具一起使用的上位机软件。因此使用STM32 ST-LINK Utility上位机软件需要有一个ST-LINK工具才行。它的功能和J-Link对应的工具类似,用于烧写代码。 STM32 ST-LINK Utility工具在产品开发过程中测试一些其他版本的代码,可以直接下载hex,而不用打开工程再编译去下载。 当你开发完一个STM32产品,需要量产的
[单片机]
<font color='red'>STM32</font> ST-LINK Utility介绍、下载、安装、使用方法
CPLD被STM32读写VHDL程序
1 2 3 --本程序用来测试STM32对CPLD的读写操作 4 5 --测试功能如下: 6 7 --向0x05地址写入0x01,LED灯停止闪烁,写入其他数据闪烁继续 8 9 --0x03,0x04寄存器为定值,可以通过STM32读取然后使用串口输出看看是否一致 10 11 12 13 --文件名:AD.vhd 14 15 library ieee; 16 17 use ieee.std_logic_1164.all; 18 19 use ieee.std_logic_unsigned.all; 20 21 22 23 entity AD is 24 25 port
[单片机]
STM32芯片+8M晶振+32.768Khz晶振的搭配选型参考方案
本文主要讲解STM32系列MCU匹配晶振的推荐选型及注意事项等。 一般来说MCU需要接入一个主频和一个时钟频率,STM32系列也不例外。 其中主频4M、8M、16M、24M、32M和48M居多,一般搭配常用日本大真空KDS、日本电波NDK 8MHZ 晶振;时钟频率即是最常见的32.768KHZ晶振。 如图所示: 一、KDS、NDK 8MHZ的主频晶振 晶振可供选择的范围很广泛,但是随着电子产品小型化越来越成为主流,电路板上提供给各位研发设计人员的空间越来越小,因此对晶振的选择也是以小体积的贴片封装为主。 本文推荐两种品牌极具性价比的8MHZ晶振,3225封装尺寸,这几年主流设计选择产品。 一种是:日本KDS大真空公司推出
[单片机]
<font color='red'>STM32</font>芯片+8M晶振+32.768Khz晶振的搭配选型参考方案
stm32 CubeMx falsh应用
STM32CubeMx工具没有配置Flash应用。需用户调用库函数实现FLASH的擦除、读、写操作。 具体FLASH的擦除、读、写流程及具体配置详情需查看STM32 FLASH编程文档。 现贴出基于STM32CubeMX工具MDK建立的工程文档,实现的FLASH操作代码。 //读取指定地址的半字(16位数据) //faddr:读地址(此地址必须为2的倍数!!) //返回值:对应数据. uint16_t STMFLASH_ReadHalfWord(uint32_t faddr) { return *(uint16_t*)faddr; } //从指定地址开始读出指定长度的数据 //ReadAddr:起始地址 /
[单片机]
STM32的开漏电路与推挽输出
开漏结构 所谓开漏电路概念中提到的“漏”就是指MOS FET的漏极。同理,开集电路中的“集”就是指三极管的集电极。开漏电路就是指以MOS FET的漏极为输出的电路。一般的用法是会在漏极外部的电路添加上拉电阻。完整的开漏电路应该由开漏器件和开漏上拉电阻组成。如图1所示: 图1 组成开漏形式的电路有以下几个特点: 1. 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。如图1。 2. 可以将多个开漏输出的Pin,连接到一条线上。形成“与逻辑”关系。如图1,当PIN_A、PIN_B、PIN_C任
[单片机]
<font color='red'>STM32</font>的开漏电路与推挽输出
热门资源推荐
热门放大器推荐
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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