江协科技STM32-GPIO相关知识学习笔记详解

前言

自己本来是学习Java的,但是秋招下来,也没有找到任何Java方向合适的工作。最后截至到现在,自己找到了某大厂测试开发offer,尽管是白菜价,但是也算是够到大厂的了。方向是硬件方向的测开,需要学习嵌入式方面的知识。经过综合考虑,自己打算学习嵌入式了,一者提前学习一下相关的知识,明年夏季入职后,可以更快的成长,二者自己春招可以试一下嵌入式。

然后经过自己几天的寻找,发现B站的江协科技所将的STM32是最好的一个,然后自己想跟着江协科技的视频来进行学习,来记录自己学习的知识笔记,以便后序的复习。另外也可以帮助小伙伴们,对相关知识进行查阅

GPIO基本介绍

0是低电平,1是高电平。

  • 引脚电平:对于输出而言,最大的也就只能输出3.3v,但是对于输入而言,最大可以输入5V
  • 具体那些可以容忍5V的,可以看STM32的引脚定义,带FT的就是容忍5V的

    GPIO基本结构

  • APB2外设总线,STM32所有GPIO都挂在在这里
  • GPIO的外设名称是按照GPIOA,GPIOB,C这样来命名的
  • 每个GPIO外设一共有16个引脚
  • 每个GPIO里面都拥有寄存器和驱动器

  • 寄存器是一段特殊的存储器,内核可以通过APB2总线对寄存器读写,这样就可以输出电平和读取电平了
  • 例如,若输入为1,那么对应的端口输出就是高电平,若为0,则对应的端口就是低电平。
  • 若读取为1,则说明端口输入高电平
  • STM的寄存器都是32位的,但是呢端口只有16位,那么只有低16位对应端口
  • 驱动器是进行信号的驱动操作
  • GPIO位结构

  • 三个寄存器,然后中间部分是驱动器,后面就是引脚了
  • 然后上面是输入部分,下面是输出部分
  • 输入设备

    引脚和两个二极管

  • 引脚旁边有两个保护二极管,这是给输入电压进行限伏的,VDD是3V,VSS是0V。
  • 如果输入的电压高于3V,那么保护二极管就会导通,电流就会流入到VDD,而不会流入内部。
  • 若电压低于VSS的电压,那么下方就会导通,就不会从内部汲取电流,保护电路
  • 上拉电阻和下拉电阻

  • 然后电路就走到了上拉电阻和下拉电阻,然后分为上拉输入模式和下拉输入模式。若两个都断开,就是浮空输入模式
  • 给输入提供一个默认的输入电平。防止引脚没有输入的时候,导致电路被外接扰动,防止引脚悬空导致的输入数据不确定
  • 若接入上拉电阻,引脚悬空时,还有上拉电阻保证引脚的高电平(默认高电平输入模式)反之就是默认低电平的输入模式
  • TTL施密特触发器

  • 施密特触发器的作用就是对输入电压进行整型的
  • 如果输入电压大于某一阈值,输出就会瞬间升为高电平,若低于某一个阈值,就变成低电平
  • 可以避免因信号波动造成的输出抖动的现象
  • 然后输入到输入数据寄存器种,就可以得到相应的数据

    然后上方还有两个线路,

  • 模拟输入:连接到ADC上,需要接受模拟量,那么就需要接到施密特触发器前面
  • 复位功能输入:连接需要读取端口的外设上面的,是需要读取数字信号的,需要在施密特触发器后面
  • 输出设备

    输入部分有两个

  • 通过输入数据寄存器,平台的IO口输出,操作某一位,就可以操作某一个端口了
  • 未设置清楚寄存器:用来操作输出寄存器的某一位,而不会影响其他的
  • 将操作的数改为1,然后没有操作的写成0,然后他内部的电路就会自动将输出数据寄存器对应位置为1,而0不变
  • 也可以使用位带的方式(当前不是)
  • 通过外设的复用功能输出
  • 然后输出控制后就接到了两个MOS管

  • MOS管就是电子开关,信号来控制开关,将IO口接到VDD或者VSS
  • 可以选择推挽(P-MOS和N-MOS均有效)
  • 输出位1是,PMOS有效(VDD),位0是N-MOS有效(VSS)
  • 开漏(P-MOS无效)若位1,则N-MOS断开,高电阻模式。若位0,N-MOS接通,输出直接到VSS(此时高电平有没有驱动能力,低电平有驱动能力)
  • 关闭(当配置输入模式的时候,两个MOS管都无效)输出关闭
  • GPIO的八种工作模式

    LED和蜂鸣器介绍

    硬件电路

    一个高电平和低电平电路

    按照第一个为例

  • LED1正极接3.3V电路,负极通过一个限流电阻接到PA0上。当PA0输出低电平的时候,LED两端就会产生电压差,就会LED就会点亮了
  • 关于高低电路的选择,主要看这个IO口的驱动能力如何了。
  • 若在推挽输出能力下,高低电平的驱动能力都比较强,两个接法都可以。但是更加倾向于第一个接法,因为大部分都是高电平弱驱动,低电平强驱动的。防止高低电平打架
  • 然后三极管驱动

    如果驱动电路过大,可以使用一个三极管驱动电路去驱动

  • 三极管的左边是基级
  • 带箭头的是发射极
  • 剩下的是集电级
  • 物联沃分享整理
    物联沃-IOTWORD物联网 » 江协科技STM32-GPIO相关知识学习笔记详解

    发表评论