STM32-GPIO八种输入输出模式

ops/2024/10/18 16:50:10/

图片取自  江协科技 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.ppmy.cn/ops/45163.html

相关文章

python基础-数据结构-leetcode刷题必看-queue---队列-python的底层构建

文章目录 队列双端队列 deque底层存储deque接口1. __init__(self, iterable: Iterable[_T], maxlen: int | None None) -> None2. append(self, __x: _T) -> None3. appendleft(self, __x: _T) -> None4. copy(self) -> Self5. count(self, __x: _T) -> int6. …

C#【进阶】特殊语法

特殊语法、值和引用类型 特殊语法 文章目录 特殊语法1、var隐式类型2、设置对象初始值3、设置集合初始值4、匿名类型5、可空类型6、空合并操作符7、内插字符串8、单句逻辑简略写法 值和引用类型1、判断值和引用类型2、语句块3、变量的生命周期4、结构体中的值和引用5、类中的值…

Canny算子

Canny算子_百度百科 (baidu.com)https://baike.baidu.com/item/Canny%E7%AE%97%E5%AD%90/8821789?frge_ala 图像处理中最经典的边沿检测算法: Canny边缘检测_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1U4411277i/?spm_id_from333.1007.top_right_bar_…

SQL面试题练习 —— 波峰波谷

来源:字节今日头条 目录 1 题目2 建表语句3 题解 1 题目 有如下数据,记录每天每只股票的收盘价格,请查出每只股票的波峰和波谷的日期和价格; 波峰定义:股票价格高于前一天和后一天价格时为波峰 波谷定义:股…

有限元之抛物型方程初边值问题解法

目录 一、原方程的变分形式 二、有限元法进行空间半离散 三、差分法进行时间全离散

python -【四】函数

函数 一、函数的基础 函数:是组织好的,可以重复使用的,用来实现特定功能的代码段 语法 def 函数名(入参): return 出参 # 定义函数 def out_hello():print(hello ~~~)# 调用/使用/执行函数 out_hello()练习题 自定义一个函数&#xff0c…

类似笔趣阁的免费软件有什么?看小说app哪个最好最全?试试这些任何小说都能看的软件

笔趣阁哪个才是正版?相信很多人想知道答案。 今天阿星跟大家聊聊那些能免费读小说、看全网漫画的app,低调推荐,希望让你告别书荒! 追书大全 首先登场的是“追书大全”这款APP,简直是小说迷的天堂! 在这…