STM32 GPIO篇

这篇具有很好参考价值的文章主要介绍了STM32 GPIO篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

·GPIO(General Purpose Input Output)通用输入输出口

·可配置为8种输入输出模式

·引脚电平: 0v~3.3v,部分引脚可容忍5v

·输出模式下可控制端口输出高低电平,用以驱动LED,控制蜂鸣器,模拟通信协议输出时序等

·输入模式下可读取端口的高低电平或电压,用于读取按键输入,外接模拟电平信号输入,ADC电压采集,模拟通信协议接受数据等

STM32 GPIO篇,STM32,江科大,GPIO,stm32,嵌入式硬件,单片机,物联网  STM32是32位的单片机,其内部的寄存器都是32位的,而端口只有16位,所以这个寄存器只有低16位对应的有端口,高16位是没有用到的。驱动器是用来增加信号的驱动能力的,寄存器只负责存储数据。

GPIO位结构(以下叙述全部基于这个结构图)

STM32 GPIO篇,STM32,江科大,GPIO,stm32,嵌入式硬件,单片机,物联网

输入部分

          可通过程序配置选择上拉电阻或下拉电阻

         如果什么都不接,此时输入就会处于一种浮空的状态,引脚的输入电平极易受外界干扰而改变,为了避免引脚悬空导致的输入数据不确定,需要加上上拉或下拉电阻。如果接入上拉电阻,当引脚悬空时,还有上拉电阻来保证引脚的高电平。

上拉输入上面导通,下面断开,默认为高电平的输入模式,即低电平有效视为 输入。

下拉输入:下面导通,上面断开,默认为低电平的输入模式,即高电平有效视为 输入。

肖特基触发器(施密特触发器)

        引脚的波形是由外界输入的,虽然是数字信号,但实际情况下可能会产生各种失真。低于下限输出低电平,高于上限输出高电平,直到下一次低于下限才输出低电平。

        作用:对输入电压进行整形。如果输入电压大于某一阈值,输出就会瞬间升为高电平;如果输入电压小于某一阈值,输出就会瞬间降为低电平。

        经过施密特触发器整形的波形就可以直接写入输入数据寄存器了,再用程序读取输入数据寄存器对应的某一位的数据,就可以知道端口的输入电平了。

片上外设:

        模拟输入:连接到ADC上,ADC需要接受模拟量,所以接到施密特触发器前。

        复用功能输入:连接到其他需要读取端口的外设上的,比如串口的输入引脚等,这根线接受的是数字量,所以在施密特触发器后面。

输出部分

        数字部分可以由输出数据寄存器或片上外设控制,两种控制方式通过数据选择器接到输出控制部分。

        如果选择通过输出数据寄存器进行控制,就是普通的IO口输出,写这个数据寄存器的某一位就可以操作对应的某个端口(其中的“位设置/清除寄存器”可以用来单独操作输出数据寄存器的某一位,而不影响其他位),因为这个输出数据寄存器同时控制16个端口,并且这个寄存器只能整体读写,所以想单独控制其中某一个端口而不影响其他端口,就需要一些特殊的操作方式。

第一种方式是先读出这个寄存器,然后用按位与(&=)和按位或(|=)更改某一位,最后再将更改后的数据写回去。(麻烦且效率不高,对于IO口的操作而言不太合适)

第二种方式是通过设置“位设置/清除寄存器”(库函数),如果我们要对某一位进行置1的操作,在位设置寄存器的对应位写1即可,剩下不需要操作的写0;如果我们要对某一位进行清0的操作,在位清除寄存器的对应位写1即可。

第三种方式是位带(相当于位寻址),在STM32中,专门分配的有一段地址区域,这段地址映射了RAM和外设寄存器所有的位,读写这段地址中的数据,就相当于读写所映射位置的某一位。

        输出控制之后接到两个MOS管,上面是P-MOS,下面是N-MOS。(这个MOS管就是一种电子开关,我们的信号来控制开关的导通和关闭,开关负责将IO口接到VDD或者VSS)在这里,可以选择推挽,开漏或关闭三种输出方式。

        推挽输出模式下,P-MOS和N-MOS均有效。数据寄存器为1时,上管导通,下管断开,输出直接接到VDD,输出高电平;数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,输出低电平。这种模式下,高低电平均有较强的驱动能力,所以推挽输出也可以叫强推输出模式。在推挽输出模式下,STM32对IO口具有绝对的控制权,高低电平都由STM32说的算。

        开漏输出模式下,这个P-MOS是无效的,只有N-MOS在工作。数据寄存器为1时,下管断开,这时输出相当于断开,也就是高阻态模式;数据寄存器为0时,下管导通,输出直接接到VSS,也就是输出低电平。这种模式下,只有低电平有驱动能力,高电平是没有驱动能力的。这个开漏模式可以作为通信协议的驱动方式,比如I2C通信的引脚,这个模式可以避免各个设备的相互干扰。此外,开漏模式还可以用于输出5v的电平信号,比如在IO口外接一个上拉电阻到5v的电源,当输出低电平时,由内部的N-MOS直接接VSS;当输出高电平时,由外部的上拉电阻拉高至5v,这样就可以输出5v的电平信号,用于兼容一些5v电平的设备。

        关闭输出模式,这个是当引脚配置为输入模式的时候,这两个MOS管都无效,也就是输出关闭,端口的电平由外部信号来控制

GPIO模式

STM32 GPIO篇,STM32,江科大,GPIO,stm32,嵌入式硬件,单片机,物联网

注意:
        浮空输入的电平是不确定的,所以在使用浮空输入时,端口一定要接上一个连续的驱动源,不能出现悬空的状态。

STM32 GPIO篇,STM32,江科大,GPIO,stm32,嵌入式硬件,单片机,物联网

        如上图,在输入模式下,输出驱动器是断开的,端口只能输入而不能输出。上面两个电阻可以选择为上拉工作(上拉输入),下拉工作(下拉输入)或者都不工作(浮空输入)。然后输入通过施密特触发器进行波形整形后,连接到输入数据寄存器。

        值得注意的是,右侧输入保护这里,上面写的是VDD或者VDD_FT,这就是3.3v端口和容忍5v端口的区别。下面的注释中也提到,VDD_FT对5v容忍IO脚是特殊的,它与VDD不同的。这个容忍5v的引脚,它的上边保护二极管要做一下处理,不然直接接VDD3.3v的话,外部再接入5v的电压就会导致上边二极管开启,并且产生比较大的电流,这个是不太妥当的。

STM32 GPIO篇,STM32,江科大,GPIO,stm32,嵌入式硬件,单片机,物联网

模拟输入:特征是GPIO无效,引脚直接接入内部ADC。

模拟输入可以作为ADC模数转换器的专属配置。

        如上图,输出驱动器是断开的,输入的施密特触发器也是关闭的无效状态。那么只有一条线有效,就是从引脚直接接入片上外设,也就是ADC。所以当我们使用ADC时,将引脚配置为模拟输入就行了,其他时候,一般用不到模拟输入。

STM32 GPIO篇,STM32,江科大,GPIO,stm32,嵌入式硬件,单片机,物联网

        开漏输出和推挽输出,这两个电路结构基本一样,都是数字输出端口,可以用于输出高低电平。区别就是开漏输出的高电平呈现的是高阻态,没有驱动能力,而推挽输出的高低电平都是具有驱动能力的。

        如上图,输出是由输出数据寄存器控制的,P-MOS如果无效,就是开漏输出;P-MOS和N-MOS都有效,就是推挽输出。此外,在输出模式下,输入也是有效的,而之前在输入模式下,输出都是无效的,这是因为,一个端口只能有一个输出,但可以有多个输入。

STM32 GPIO篇,STM32,江科大,GPIO,stm32,嵌入式硬件,单片机,物联网

        如上图,输出控制没有连接输出数据寄存器,引脚的控制权转移到了片上外设。在输入部分,片上外设也可以读取引脚的电平,同时普通的输入也是有效的,顺便接收一下电平信号。

        其实在GPIO的这八种模式中,除了模拟输入这个模式会关闭数字的输入功能,在其他的七个模式中,所有的输入都是有效的。文章来源地址https://www.toymoban.com/news/detail-848386.html

到了这里,关于STM32 GPIO篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式-stm32-江科大-OLED调试工具

    1.1 OLED显示屏介绍 学习任何一门语言就需要进行调试,stm32调试方式主要有以下三种: 串口调试:通过串口,将调试信息发送到电脑端,电脑端使用串口调试助手显示调试信息。 显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上。 Keil调试模式:借助Kei

    2024年01月21日
    浏览(53)
  • 嵌入式学习笔记——STM32硬件基础知识

    上一篇中我们重点是讲了一下怎么搭建开发环境以及怎么下载烧录的过程,这都是解决的电脑端的开发环境问题,还没有到实际的开发板上,我们的单片机是都是焊接在开发板上的,PCB上有着它所需的工作电路。并不是直接给供电电压就可以让其工作的,本文主要是简介一下

    2024年01月22日
    浏览(68)
  • 单片机STM32看门狗详解(嵌入式学习)

    单片机STM32的看门狗(Watchdog)是一种硬件定时器,用于监控系统的运行状态并在出现故障或死锁时采取措施以恢复正常操作。看门狗的主要功能是定期检查系统是否正常运行,并在系统出现问题时触发复位操作。 STM32系列单片机通常配备了内置的看门狗定时器(通常称为独立

    2024年02月13日
    浏览(61)
  • stm32毕设分享 stm32实现车牌识别系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(60)
  • stm32毕设分享 Stm32酒驾检查系统 - 单片机 嵌入式 物联网

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月23日
    浏览(72)
  • 嵌入式项目分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(72)
  • stm32毕设分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(71)
  • 嵌入式项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(133)
  • stm32毕设分享 stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(54)
  • stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包