当前位置: 首页 > news >正文

STM32-GPIO八种输入输出模式

图片取自  江协科技 STM32入门教程-2023版 细致讲解 中文字幕 p5

【STM32入门教程-2023版 细致讲解 中文字幕】 https://www.bilibili.com/video/BV1th411z7sn/?p=5&share_source=copy_web&vd_source=327265f5c70f26411a53a9226af0b35c

目录

​编辑

一.STM32的四种输入方式

1、上拉输入(GPIO_Mode_IPU)

 2、下拉输入(GPIO_Mode_IPD)

3、模拟输入(GPIO_Mode_AIN)

4、浮空输入(GPIO_Mode_IN_FLOATING)    

二.STM32的四种输出方式

1、普通推挽输出(GPIO_Mode_Out_PP)

2、普通开漏输出(GPIO_Mode_Out_OD)

​编辑

3、复用推挽输出(GPIO_Mode_AF_PP)

4、复用开漏输出

三.结束语


一.STM32的四种输入方式

1、上拉输入(GPIO_Mode_IPU)

        图片1处信号进入芯片后加了一个上拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为高电平

// 初始化上拉输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;          // 上拉输入模式
GPIO_InitStruct.Pull = GPIO_PULLUP;              // 上拉输入
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

 2、下拉输入(GPIO_Mode_IPD)

        图片2处信号进入芯片后加了一个上拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为高电平

// 初始化下拉输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;          // 下拉输入模式
GPIO_InitStruct.Pull = GPIO_PULLDOWN;            // 下拉输入
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

3、模拟输入(GPIO_Mode_AIN)

        信号进入后不经过上拉电阻或者下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块。

// 初始化模拟输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;         // 模拟输入模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

4、浮空输入(GPIO_Mode_IN_FLOATING)    

        信号进入芯片内部后,既没有接上拉电阻也没有接下拉电阻,经由触发器输入。

// 初始化浮空输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;          // 浮空输入模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

二.STM32的四种输出方式

1、普通推挽输出(GPIO_Mode_Out_PP)

用在0V和3.3V的场合。线路经过两个P_MOS 和N_MOS 管,负责上拉和下拉电流。

可以直接使用,推挽输出的低电平是0V,高电平是3.3V。

// 初始化复用推挽输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode =GPIO_Mode_Out_PP;          // 普通推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

2、普通开漏输出(GPIO_Mode_Out_OD)

用在电平不匹配的场合,需要输出5V的高电平的时候。用的时候就需要再外部接一个上拉电阻,电源为5V,把GPIO设置为开漏模式,

// 初始化复用推挽输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_Mode_Out_OD;          // 普通开漏输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

3、复用推挽输出(GPIO_Mode_AF_PP)

串口的输出

// 初始化复用推挽输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;          // 复用推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

4、复用开漏输出

IIC

// 初始化复用开漏输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;          // 复用开漏输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

三.结束语

以上就是对STM的输入输出的一个总结.

http://www.lryc.cn/news/358108.html

相关文章:

  • windows镜像虚拟机创建共享文件夹详细步骤 -- 和本地电脑传输文件
  • 通关!游戏设计之道Day18
  • 写Python时不用import,你会遭遇什么
  • java网络:过滤器修改请求头
  • yolov10 快速使用及训练
  • CSS变量 -- var() 使用教程
  • python基础-数据结构-leetcode刷题必看-queue---队列-python的底层构建
  • 深入理解Spring Security:保护你的Web应用程序
  • 【车载开发系列】Vector工具链的安装
  • Windows系统部署YOLOv5 v6.1版本的训练与推理环境保姆级教程
  • [RK3588-Android12] 关于EDP屏外设为Panel,不支持HPD的配置
  • 142.栈和队列:用栈实现队列(力扣)
  • 乡村振兴的乡村产业创新发展:培育乡村新兴产业,打造乡村产业新名片,促进乡村经济多元化发展
  • 数据库|基于T-SQL创建数据库
  • 智能家居ZigBee网关选型定制指南:主控,操作系统,天线设计,助力IoT开发者
  • QT截图程序,可多屏幕截图二,增加调整截图区域功能
  • 开源浪潮与闭源堡垒:大模型未来的双重奏
  • postman教程-6-发送delete请求
  • java小技能: 数字和字母组合的验证码图片(生成验证码字符并加上噪点,干扰线)
  • 网络故障与排除
  • Cocos Creator 编辑器的数据绑定详解
  • 解决Selenium NameError: name ‘By’ is not defined
  • 创建特定结构的二维数组:技巧与示例
  • React Native 之 BackHandler (二十)
  • 一篇文章讲透排序算法之快速排序
  • kubernetes-PV与PVC、存储卷
  • 643. 子数组最大平均数 I
  • Node性能如何进行监控以及优化?
  • ToList()和ToArray()的区别
  • 11.RedHat认证-Linux文件系统(中)