郑州网站建设七彩科技,sem是什么意思啊,免费空间网,社交电商怎么做赚钱文章目录 一#xff1a;GPIO输入输出原理二#xff1a;GPIO基本结构三#xff1a;GPIO位结构四#xff1a;GPIO的八种模式道友#xff1a;相信别人#xff0c;更要一百倍地相信自己。 #xff08;推荐先看文章#xff1a;《
嵌入式-32单片机-GPIO推挽输出和开漏输出》… 文章目录 一GPIO输入输出原理二GPIO基本结构三GPIO位结构四GPIO的八种模式道友相信别人更要一百倍地相信自己。 推荐先看文章《
嵌入式-32单片机-GPIO推挽输出和开漏输出》 一GPIO输入输出原理
GPIOGeneral Purpose Input Output通用输入输出口 可配置为8种输入输出模式 引脚电平0V~3.3V部分引脚可容忍5V有FT标识 输出模式下可控制端口输出高低电平用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 输入模式下可读取端口的高低电平或电压用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等
二GPIO基本结构 上图是GPIO的基本结构图。在Stm32中所有的GPIO都挂载在APB2外设总线上。每个GPIO模块内包括有寄存器、驱动器、引脚等 寄存器就是一段特殊的存储器内核可以通过APB2总线对寄存器进行读写从而完成输出电平和读取电平的功能。该寄存器的每一位都对应一个引脚由于STM32是32位的单片机所以所有的寄存器都是32位的也就是说只有寄存器的低16位对应上了相应的GPIO口好多时候高16位置0低16位才真正控制寄存器 驱动器就是增加信号的驱动能力的。 注意stm32F103c8t6芯片上48个引脚除了基本的电源和晶振等维持系统外分别包括PA0~PA15、PB0-PB15、PC0 ~PC15。
三GPIO位结构 上图分为输入部分和输出部分看虚线框 输入部分 整个框架从左往右依次是寄存器、驱动器、IO引脚从上到下分为“输入”、“输出”。最右侧的IO引脚上两个保护二极管其作用是对IO引脚的输出电压进行限幅在0~3.3V之间进而可以避免过高的IO引脚输入电压对电路内部造成伤害。Vdd 3.3V,Vss 0V。 过压保护当I引脚输入10V时电压从输入引脚到保护二极管再到Vdd,有电压差就能流通这叫过压保护。低压保护当I引脚输入低于0V时这叫做负电压此时电流流向为从Vss →I引脚这叫低压保护。 输入驱动器的上、下拉电阻图中像弹簧那两根相应的开关可以通过程序进行配置分别有上拉输入模式上开关导通下开关断开、下拉输入模式下开关导通上开关断开、浮空输入模式两个开关都断开。 下拉电阻的作用几时给引脚输入提供一个默认的输入电平进而避免引脚悬空导致的不确定。都属于弱上拉弱下拉。 输入驱动器的触发器这里是用肖特基管构成的施密特触发器。只有高于上限、低于下限电压才进行变化作用是对输入电压进行整形可以消除电压波纹、使电压的上升沿/下降沿更加陡峭。也就是说stm32的GPIO的端口会自动对输入的数字电压进行整形。比如像那种方波在变化的那个瞬间进行消抖20ms. “模拟输入”、“复用功能输入”都是连接到片上外设的一些端口前者用于ADC等需要模拟输入的外设后者用于串口输入引脚等需要数字量的外设。 输出部分 输出数据可以由输出数据寄存器普通的IO口输出、片上外设来指定数据选择器控制数据来源。位设置/清除寄存器单独操作输出数据的某一位而不影响其他位。驱动器中的MOS管MOS管相当于一种开关输出信号来控制这两个MOS管的开启状态进而输出信号。可以选择推挽、开漏、关闭三种输出方式推荐先看文章《嵌入式-32单片机-GPIO推挽输出和开漏输出》P-MOS相当于Q1,N-MOS相当于Q2 推挽输出模式两个MOS管均有效stm32对IO口有绝对的控制权也称为强推输出模式。开漏输出模式P-MOS无效。只有低电平有驱动能力高电平输出高阻。关闭模式两个MOS管均无效端口电平由外部信号控制。 补充说明stm32如何将数据写入寄存器 通过软件的方式。由于stm32的寄存器只能进行整体读写所以可以先将数据全部读出然后代码中用 清零、| 置位的方式改变单独某一位的数据再将该写后的数据写回寄存器。此方法比较麻烦效率不高对于IO口进行操作不合适这就是基于寄存器开发的麻烦之处所以有了基于标准库的开发 通过位设置/清除寄存器。若对某一位 置1只需对位设置寄存器的相应位值1若对某一位 清零则对清除寄存器相应位 清零。这种方式通过内置电路完成操作一步到位。 通过读写stm32中的“位带”区域。在stm32中专门分配有一段地址区域该区域映射了RAM和外设寄存器所有的位。读写这段地址中的数据就相当于读写所映射位置的某一位。整体流程与51单片机中的位寻址作用差不多。本教程不涉及。 四GPIO的八种模式
模式名称性质特征浮空输入数字输入可读取引脚电平若引脚悬空则电平不确定需要连续驱动源上拉输入数字输入可读取引脚电平内部连接上拉电阻悬空时默认高电平下拉输入数字输入可读取引脚电平内部连接下拉电阻悬空时默认低电平模拟输入模拟输入GPIO无效引脚直接接入内部ADCADC专属配置开漏输出数字输出可输出引脚电平高电平为高阻态低电平接Vss推挽输出数字输出可输出引脚电平高电平接VDD,低电平接Vss复用开漏输出数字输出由片上外设控制高电平为高阻态低电平接Vss复用推挽输出数字输出由片上外设控制高电平接VDD,低电平接Vss
上表给出了GPIO的八种模式通过配置GPIO的端口配置寄存器即可选择相应的模式。 每一个端口的模式由四位进行控制16个端口就需要64位也就是两个32位寄存器即端口配置低寄存器、端口配置高寄存器。输入模式下输出无效而输出模式下输入有效。这是因为一个IO口只能有一个输出但可以由多个输入所以直接将输出信号输入回去也没问题。 寄存器暂时记录数据的模块。
复用开漏/推挽输出引脚的控制权转移到了片上外设 stm32串口默认是半双工的。
三极管可看成两个二极管构成背靠背
参考B站STM32江协自动化【哈工大虎慕】
道友相信别人更要一百倍地相信自己。