找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1975|回复: 0
打印 上一主题 下一主题
收起左侧

STM32的GPIO介绍

[复制链接]
跳转到指定楼层
楼主
ID:743558 发表于 2021-4-25 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初入嵌入式的小白,用通俗易懂的语言描述了我对GPIO的了解,大牛完全可以绕行,我这是比较基础的理解,适合小白们一块学习交流,有什么错误请指正,欢迎交流学习,谢谢。
GPIO的简介:
GPIO它的学名叫通用输入输出端口,其实它就是单片机的I/O口,他承担着将芯片与外部设备连接实现与外部通讯,控制和数据采集的功能。
GPIO的结构:
STM32的GPIO的硬件结构图如图所示
嗯,我们能够看到的值有最右边①部分的I/O口引脚,剩下的都在芯片里面,如果想要系统的了解STM32的GPIO,读懂这个结构图还是非常有必要的,嘿嘿,一点一点来看吧。
①保护部分:
引脚上的两个保护二极管是用来保护I/O口引脚的,两个二极管的作用分两种情况
情况1当输入的电压过高时:上面的保护二极管导通。
情况2当输入的电压过低时:下面的保护二极管导通。
都是为了防止不正常的电压进入芯片然后烧毁芯片。
②输出驱动部分:
两个MOS管一个P-MOS管一个N-MOS管使得这部分可以进行有推挽输出和开漏输出,简单table about一下推挽输出和开漏输出,推挽输出你可以简单理解为两个MOS管都工作,输入高电平(3.3V)时P-MOS管导通I/O口输出高电平,输入低电平时N-MOS管导通I/O口输出低电平(0V),而开漏输出就只有N-MOS管工作,所以在这个模式下当输入输入低电平时N-MOS管导通I/O口输出低电平(0V),输入高电平时,I/O口输出状态为高阻态(就时那种不稳定的电平)。
应用场合:
推挽输出主要用在比如说经典之光流水灯,有源蜂鸣器等需要快速切换状态的场合。
开漏输出主要用在一些比如IIC等这些通讯场合。
③输出数据寄存器
我们上面一直说“当输入XX电平”,大家是不是会有疑问这个电平从哪里来呢,别急这就来说。这个电平就来自前面的这个输出数据寄存器,它是由ODR这个寄存器来进行控制,也就是我们可以通过控制这个寄存器来改变输出端口的电平。ODR这个寄存器具体控制操作去瞅瞅官方工作手册,这里就不再展开了。


④复用输出
我们在学习51单片机的时候,就知道经典的STC89C51 P3端口具有第二功能,比如P3.0 P3.1端口既可以作为普通的I/O口又可以进行串口通讯,我们32单片机I/O口同样具有第二功能,我们把它稍微的美化了一下叫端口复用。
⑤输入数据寄存器
单片机的I/O口通过上面的两个电阻可以被配置为上拉和下拉输入,经过施密特触发器转化为0,1信号存储在输入数据寄存器中,通过IDR寄存器就可以知道该引脚电平的状态。
⑥复用输入
和复用输出类似,把输入的信号传给其他的寄存器,共其他外设读取。
⑦模拟输入
当I/O口用来采集模拟信号的时候,就必须啊将端口设置为模拟输入模式,信号就不再经过施密特触发器,直接进入响应的片上外设。

好了到这里STM32的GPIO的结构就说完了,这是我个人在学习后的理解,里面可能有说的不深入的地方(悄悄说一声我是有硬件基础),这个得自己去补充硬件基础了!

下面我列举一下关于GPIO的工作模式,这些工作模式最好我们还是去记住他,如果英文好,根本不需要记,就可以直接的翻译出来
最后附上常用的操作GPIO的函数(HAL库)
1 HAL_GPIO_Writepin函数
HAL_GPIO_Writepin(GPIOX ,GPIO_PIN_X, GPIO_PIN_SET/RESET);
向X引脚写入高电平/低电平
2 HAL_GPIO_Readpin函数
HAL_GPIO_Readpin(GPIOX ,GPIO_PIN_X);
读取X引脚电平状态
3 HAL_GPIO_Togglepin(GPIOX ,GPIO_PIN_X);
使X引脚状态反转
以上的的Word格式文档51黑下载地址:
STM3的GPIO.doc (372.5 KB, 下载次数: 7)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表