STM32 GPIO的几种工作模式

news2024/10/5 20:24:24

介绍STM32 GPIO的几种工作模式

1、输出模式

在这里插入图片描述

   STM32的引脚输出有两种方式:
      1、推挽输出
      2、开漏输出

1.1 推挽输出

    当引脚设置为推挽输出时,P-MOS和N-MOS共同配合工作。
    当使用HAL库

//该函数的作用就是将P-MOS导通,N-MOS关闭
HAL_GPIO_WritePin(XXX, XXX, 1);
//该函数的作用就是将P-MOS关闭,N-MOS导通
HAL_GPIO_WritePin(XXX, XXX, 0);

在这里插入图片描述
    如上图,当led1的一端接地,另一端接stm32的一个引脚,此时我们可以用推挽输出,输出高低电平来控制小灯的亮灭。

1.2、开漏输出

    开漏输出下,只有N-MOS工作,P-MOS一直处于断开状态。

//N-MOS断开
HAL_GPIO_WritePin(XXX, XXX, 1);

    整个IO口内部处于高阻态,或者说断路,不对外输出电平。

//N-MOS导通
HAL_GPIO_WritePin(XXX, XXX, 0);

    IO口对外输出低电平。
在这里插入图片描述

    如上图,当led2的一端接5v,另一端接在mcu的引脚上。我们可以使用开漏输出控制小灯的亮灭。当write 1时,断路,小灯灭。write 0 时小灯左侧接地右侧接5v,亮。

1.3、输出模式总结

    1、推挽输出小灯是由来自芯片的电压所驱动。
    2、开漏输出没有驱动能力,必须依靠外部的电压源来进行驱动小灯亮灭。

推挽输出开漏输出
高电平P-MOS激活、N-MOS断开,3.3VP-MOS断开、N-MOS断开
低电平P-MOS断开、N-MOS激活P-MOS断开、N-MOS激活
优点可直接输出3.3v配合外部电路,更加灵活
缺点只能输出3.3v高电平实际是高阻态,无法输出电流

2、输入模式

    框图如下:
在这里插入图片描述
    1、外部电流经引脚向内流入首先经过一对上下拉电阻。继续前进会经过肖特基触发器,或者说斯密特触发器。其作用是稳定电平。
    2、斯密特触发器:会有高参考电压和低参考电压。当高于高参考电压会被单片机认为是高电平1,低于低参考电压会被单片机认为是低电平0。如果在两者中间,则维持上次电平不变。
    3、继续前进,该值就会被写入输入数据寄存器。当调用HAL库HAL_GPIO_ReadPin函数时就会读走该值。

2.1、上拉输入

    上拉电阻使能。

2.2、下拉输入

    下拉电阻使能。

2.3、浮空输入

    上下拉电阻都关闭。

2.4、模拟输入

    该模式下是为了读取输入电压的具体数值(ADC), 所以上面框图中在斯密特触发器之前就走向了另一个分支。

3、测试

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ff860285dcd84aafb6f743a923be46fb.pn
在这里插入图片描述

    如上原理图,LED的一脚VCC 3.3V,另一脚接在stm32的PC13上。按键K1接在stm32的PB14上,外部上拉。我们实现按键按下小灯亮,再按下小灯熄灭。

3.1、STM32CubeIDE配置

    新建STM32工程,我这里使用STLINK,配置SW接口用于烧录程序。
在这里插入图片描述
在这里插入图片描述
    ctrl + s 快捷键保存生成代码。

3.2、coding

在这里插入图片描述
    如上图,调用HAL_GPIO_ReadPin会去读取按键脚对应的IDR寄存器获取引脚电平状态,来判断按键是否按下。调用HAL_GPIO_TogglePin对BSRR寄存器操作,实现引脚电平翻转。即可实现按下小灯熄灭活点亮。

4、STM32 GPIO 相关寄存器介绍

4.1、GPIO->ODR寄存器

在这里插入图片描述
    可读可写。低16位,对应位写1输出高电平,写0输出低电平。高16位保留。

4.2、GPIO->BSRR寄存器

在这里插入图片描述
    只写寄存器,32位,既能控制管教为低电平,也能控制管教为高电平。

43、GPIO->BRR寄存器

在这里插入图片描述

在这里插入图片描述

    端口位清除寄存器,只写,只能改变管脚状态为低电平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1493959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA- RGB_TFT显示屏原理及驱动逻辑

下图是TFT显示屏的显示效果 该显示屏共分为 2 个版本,4.3 寸版本的 TFT4.3’’_V3.0 和 5.0 寸版本的 TFT5.0’’_V3.0。 两者 PCB 背板电路完全相同,接口脚位定义完全相同,接口时序完全相同,仅使用的显示屏 模组尺寸不同。设计两…

chromedriverUnable to obtain driver for chrome using ,selenium找不到chromedriver

1、下载chromedriver chromedriver下载网址:CNPM Binaries Mirror 老版本在:chromedriver/ 较新版本在:chrome-for-testing/ 2、设置了环境变量还是找不到chromedriverUnable to obtain driver for chrome using NoSuchDriverException:…

IDEA修改git提交者的信息

git提交后,idea会记录下提交人的信息,如果不修改提交人信息的话,会有一个默认值。避免每次提交都要填提交人信息,直接设置成自己想要的默认值,该怎么操作? 提交的时候在这里修改提交人信息 避免每次都去设置…

小白优化Oracle的利器”sqltrpt.sql”脚本

SQL调优顾问是Oracle自带的一个功能强大的内部诊断工具,用于对性能不佳的SQL语句给出优化建议。但如果从命令行调用它比较麻烦,幸运的是,Oracle提供了一个方便的内置脚本“sqltrpt.sql”,简化了调用过程。 sqltrpt.sql脚本位于Or…

【论文速读】 | AI驱动修复:漏洞自动化修复的未来

本次分享论文为:AI-powered patching: the future of automated vulnerability fixes 基本信息 原文作者:Jan Nowakowski, Jan Keller 作者单位:Google Security Engineering 关键词:AI, 安全性漏洞, 自动化修复, LLM, sanitiz…

C++初阶篇----类与对象下卷

目录 1.再谈析构函数1.1构造函数体赋值1.2 初始化列表1.3 explicit关键字 2.Static成员2.1概念2.2 特性 3.友元3.1 概念3.2友元函数3.3 友元类 4.内部类4.1 概念 5.匿名对象5.1 概念 6.拷贝对象时的一些编译器优化7.再次理解封装 1.再谈析构函数 1.1构造函数体赋值 在对类的实…

力扣大厂热门面试算法题 - 动态规划

爬梯子、跳跃游戏、最小路径和、杨辉三角、接雨水。每题做详细思路梳理,配套Python&Java双语代码, 2024.03.05 可通过leetcode所有测试用例。 目录 70. 爬楼梯 解题思路 完整代码 Python Java 55. 跳跃游戏 解题思路 完整代码 Python 代码…

LeetCode每日一题 二叉树的最大深度(二叉树)

题目描述 给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root [1,nul…

大摩突发:将推出比特币ETF

作者:秦晋 随着比特币ETF愈发火爆,华尔街另一家管理1.3万亿美元资产的大型经纪自营商「摩根士丹利」正在蠢蠢欲动,准备进军比特币ETF。 据彭博社数据显示,目前10只比特币现货ETF在上周三创下单日交易新纪录,成交量超过…

太惊艳了!多微信管理利器,让你事半功倍!

作为现代社交媒体的主要平台之一,微信在商务领域中扮演着重要的角色。为了提高我们的工作效率,微信管理系统应运而生。 这个系统可以同时登录多个微信账号,并进行统一管理。除了便捷的登录管理功能外,微信管理系统还提供了许多实…

优思学院|质量和企业的盈利能力有何关系?

质量和企业的盈利能力有何关系?三十年前,这个问题就已经被提出。当时的学者们研究了高质量产品如何带来更高的盈利。虽然这听起来像是老生常谈,但它的真理至今仍深深影响着我们的商业决策。 为了更直观地理解,一些学者绘制了以下…

Redis 核心面试题归纳

文章目录 RedisAOF 相关1. redis AOF 文件备份时,是使用的 write ahead log 的方式吗2. redis 开启AOF后的写入步骤3. redis AOF文件重写过程4.AOF 持久化策略 RDB 相关1.RDB 写入过程rdb 过程中,复制的页表是什么 Redis 主从同步1.PSYNC 和 SYNC 的区别…

Vue 前端开发 v-for和v-if两个指令不能混合使用

原由: 在进行项目开发的时候因为在一个标签上同时使用了v-for和v-if两个指令导致的报错。 提示错误:The undefined variable inside v-for directive should be replaced with a computed property that returns filtered array instead. You should no…

安装QT时,安装进程(qt.tools.perl)运行期间出现错误

安装QT时,安装进程(qt.tools.perl)运行期间出现错误 解决方法

小智浏览器助手

作为使用者来说,这个浏览器头痛的地方就是不能随意的切换地址,每次都要重新配置ini文件 再重新打开。 于是,我想了个办法,在使用前面加个能切换,维护地址的程序,让它来调用这个浏览器不就实现我的要求了&a…

【CSP考点回顾】前缀和数组

一、一维数组前缀和 前缀和算法是一种用于处理数组的技术,它可以快速计算任何连续子数组的和。适合在多次查询中需要求解多个范围和的情况。使用前缀和算法可以将每次求和的时间复杂度从 O(n) 降低到 O(1)。 前缀和的思想是创建一个新数组 A r r Arr Arr&#xff0…

kamailio转发电话到目的地,目的返回失败时再转给其他IP

按图中这样测试: A---->kamailio------->B B返回480等失败错误码(非200 OK),能进入failure_route[TOVOICEMAIL],但是t_relay_to_udp执行失败。 好吧,说是:在 failure_route 中处理的是…

干货!Python函数定义与调用

1.函数定义 函数主要有两部分组成:声明部分和实现部分 def 是 define的简写,表示定义的意思 函数名类似于变量名,遵守标识符命名规则,尽量做到见名知意 ():里面放的是参数列表,参数列表中的参数可以为空 函数体:表…

Claude3荣登榜首,亚马逊云科技为您提供先行体验!

Claude3荣登榜首,亚马逊云科技为您提供先行体验! 个人简介前言抢先体验关于Amazon BedrockAmazon Bedrock 的功能 Claude3体验教程登录Amazon Bedrock试用体验管理权限详细操作步骤1.提交应用场景详细信息2.请求模型的访问权限3.请求成功,开始…

Windows下Golang开发环境的安装

以下是在Windows操作系统下安装Go语言环境(Golang)的步骤。 请注意,安装步骤可能因Go的版本更新而有所变化,以下教程适用于撰写本文时的最新稳定版。 1、下载Go语言安装包 打开Go语言的官方下载页面:https://golang.go…