STM32学习笔记———GPIO

GPIO简介

GPIO(general porpose input output):通用输入输出端口,可以通过软件控制其输出,检测其输入。STM32芯片通过GPIO引脚
与外界设备连接起来,从而实现与外部数据通信,控制与数据采集

GPIO基本结构

在这里插入图片描述
STM32F407共有7组IO口,每组IO口共有16口,一共112个IO.命名为GPIOA,GPIOB,GPIOC…GPIOG,然后每组IO口的命名是0到15,一共15个,如GPIOA1等,寄存器的每一位都对应一共引脚,其中输出寄存器写1,就输出高电平,写0,就输出低电平。输入寄存器读取0,意味着该引脚当前为低电平,读取1,意味着该引脚目前为高电平。

GPIO位结构

在这里插入图片描述
输入部分
保护二级管的作用是防止电流过高或者电流过低破环内部电路,当电流过高时,VDD的保护二级接通高电流就不会流入内部电路了,当电压为负时,VSS接通,负压也不会通过电路析取电流,起到了保护电路的效果。之后我们可以看到有两个开关,这两个开关就是上拉电阻和下拉电阻,通俗来讲,就是为引脚赋初值,打开上拉电阻时,默认输入为正,打开下拉电阻时,默认输入为负,这样可以防止引脚悬空刀子和的电平不确定。需要注意的是,上拉电阻和下拉电阻均为弱上拉,以便尽可能减少对于外部输入的影响。之后我们可以看到肖特基触发器,该触发器起到的是整流的作用,外部输入的信号往往是连续的,但单片机只能读取0V和5V,该触发器的作用是当外部输入高于一定电平时,就输出高电平,当低于一定电平时,就输出低电平,当外部电平在两者之间跳变时,将保持不变,从而起到了整流的作用。
复用功能输入就是将IO口交由其他外设管理
模拟输入主要接入ADC
输出部分:
首先来看以下位设置/清除寄存器,主要功能就是单独控制输出寄存器的某一位数据,之后是这两个MOS管,可以将IO口接到VDD或者VSS。从而可以输出高电平或者低电平

8种输入输出模式

开漏输出:P-MOS无效,N—MOS有效,可输出低电平,无法输出高电平,想要输出高电平,只能连接外部电源
推挽输出:P—MOS,N-MOS均有效,可以输出高低电平
复用开漏输出:由片上外设管理,P-MOS无效,N—MOS有效,可输出低电平,无法输出高电平,想要输出高电平,只能连接外部电源
复用推挽输出:由片上外设管理,P—MOS,N-MOS均有效,可以输出高低电平
浮空输入:可读取外部电平,引脚悬空时候电平不确定
上拉输入:可读取外部电平,引脚悬空时侯默认高电平
下拉输入:可读取外部电平,引脚悬空时侯默认低电平
模拟输入:GPIO无效,外部输入直接接入ADC

代码配置举例

在这里插入图片描述
配置思路:
首先使能端口硬件时钟,再配置GPIO结构体,首先选择引脚,再选择模式,选择引脚速度及输出模式,最后调用GPIO初始化函数,传入结构体,可用于点亮LED灯,蜂鸣器,通讯协议等,模拟等,输入模式可以用于按键检测,解码通讯协议等。

矩阵键盘

  矩阵键盘是单片机外部设备中所使用排布类似于矩阵的键盘,当单片机所需要连接的按键数目比较多时,采用矩阵键盘的连接方式可以减少所需的IO量,如需要连接16个按键时,采用普通按键只需要用16个IO口,采用按键形式只需要连接4*4八个IO口,矩阵键盘的电路形式如下:

在这里插入图片描述
在这里插入图片描述
读取矩阵键盘按键数目采用行列扫描法:
首先将行端口配置为输出模式,默认输出低电平,列端口配置为弱上拉模式,当列端口检测到到高电平时,既可确定哪一列的端口被按下。
确定列后,需要将列端口配置为输出模式(输出低电平),行端口配置为输入模式(弱上拉),当检测到到行端口为低电平时,即可确定是哪一行,结合哪一行哪一列既可以确定是哪一个端口被按下:在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值