STM32F103C8----GPIO(跟着江科大学STM32)

news2024/9/25 19:17:47

一,GPIO简介

GPIO(General Purpose Input Output)通用输入输出口

可配置为8种输入输出模式

引脚电平:0V~3.3V(0V),部分引脚可容忍5V

输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等

输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

二,GPIO基本结构

 

 所有的GPIO都是关在APB2总线上。在控制板上有如下针脚

三,GPIO位图 

3.1 保护二极管

先看右边的的两个保护二极管,VDD接3.3V,VSS接地。当右侧IO引脚输入大于3.3V不会对内部电路产生伤害。

 如果右侧IO针脚输入了一个负电压,那么在VSS和IO会形成回路,对内部起到保护作用。

只有当输入电压是0-3.3V,才会进入系统内部 。

3.2 上拉输入

3.3 下拉输入 

 3.4 浮空输入

输入不是高电平就是低电平,当外部IO什么都不接,这个时候处于浮空状态,极易受外界干扰,就不能确定输入的是高电平还是低电平。所以我们在程序中常用上拉或者下拉输入。 

上拉输入:默认输入高电平

下拉输入:默认输入低电平

3.5 肖特基触发器

只在大于上限或者小于下限时做变化,所以简易逻辑如下图 ,

低于上限不一定会发生变化,高于下限也不一定会变化。

有效避免电压波动导致的输入抖动情况。 

 

3.6 推婉输出

推婉输出模式下,输出1,P=MOS导通 ,N-MOS断开,I/O输出高电平

 输出0,P=MOS断开 ,N-MOS导通,I/O输出低电平

 推婉输出有绝对的控制权。也较强输出。

3.7 开漏输出

在开漏输出模式下,P-MOS无效,只有N-MOS工作。

 在多级通讯中,这种模式避免设备之间的相互干扰。

也可用于5V的电平信号输出。当寄存器输出0,是N-MOS导通,输出低电平。 

当输出1时,由外部的上拉电阻拉高电平。实现5V通电。

 3.8 关闭输出

综上如下表 

输出寄存器的值P-MOSN-MOS输出
推婉输出1导通关闭高电平
0关闭导通低电平
开漏输出1无效关闭高阻模式(只有低电平有驱动能力。比如I2C引脚)
0无效导通低电平
关闭输出1无效无效端口关闭,外部信号控制
0无效无效端口关闭,外部信号控制

四,GPIO模式 简易电路图

 通过配置GPIO的端口配置寄存器,端口可以配置成以下8种模式

4.1 程序中代码配置

程序中的GPIO模式配置 枚举如下

typedef enum
{ GPIO_Mode_AIN = 0x0,//模拟输入
  GPIO_Mode_IN_FLOATING = 0x04,//浮空输入
  GPIO_Mode_IPD = 0x28,//下拉输入
  GPIO_Mode_IPU = 0x48,//上拉输入
  GPIO_Mode_Out_OD = 0x14,//开漏输出
  GPIO_Mode_Out_PP = 0x10,//推婉输出
  GPIO_Mode_AF_OD = 0x1C,//复用开漏输出
  GPIO_Mode_AF_PP = 0x18//复用推挽输出

}GPIOMode_TypeDef;

 GPIO的初始化配置代码举例(A0针脚,推婉输出)

	/*GPIO初始化*/
	GPIO_InitTypeDef GPIO_InitStructure;					//定义结构体变量
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		//GPIO模式,赋值为推挽输出模式
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;				//GPIO引脚,赋值为第0号引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//GPIO速度,赋值为50MHz
	
	GPIO_Init(GPIOA, &GPIO_InitStructure);					//将赋值后的构体变量传递给GPIO_Init函数
															//函数内部会自动根据结构体的参数配置相应寄存器
															//实现GPIOA的初始化

 4.2 浮空/上拉/下拉输入 电路图

4.3 模拟输入 电路图

4.4 开漏/推挽输出 电路图

4.5 复用开漏/推挽输出 电路图

 

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

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

相关文章

idea2021安装教程与常见配置(可激活至2099年)

idea2021安装教程与常见配置(可激活至2099年) 下载 官网下载地址:https://www.jetbrains.com/zh-cn/idea/download/other.html 这里我们选择压缩包安装方式,选择2021.3 - Windows x64 ZIP Archive (zip),也可以选择exe安装方式 安装 解压缩安装方式 创建非中文目录D:\idea…

Win32绕过UAC弹窗获取管理员权限

在早些年写一些桌面软件时,需要管理员权限,但是又不想UAC弹窗,所以一般是直接将UAC的级别拉到最低,或者直接禁用UAC的相关功能。 什么是UAC(User Account Control) 用户帐户控制 (UAC) 是一项 Windows 安全功能,旨在保…

行走挖机多路比例阀控制放大器

挖掘机比例多路阀是挖掘机液压系统中的关键部件,它负责控制挖掘机各执行元件的运动方向、速度和力矩,从而影响挖掘机的作业效果。比例多路阀由多个阀块组成,其中比例控制阀由BEUEC比例放大器控制。每个阀块都有特定功能,如换向阀用…

昇腾大模型性能分析思路

性能分析 模型训练优化流程 我们根据性能问题的场景,按照单机和集群场景进行分类,再明确性能问题属于哪一类,明确好性能问题背景之后,才方便进行下一步问题的定位; 在明确问题背景后,参考性能分析工具介绍…

004、架构_详解(重点)

GoldenDB 分布式数据库框架 DN和RDB增加了备节点;引入新模块CM,且GTM、MDS、PM、CM都增加备节点;MDS、PM、CM、RDB被统一在了管理节点之中;GTM和MDS间多了一条连线,因为GTM的切换由MDS把控;初步系统架构mysqld:一般称为DB节点,负责单个节点的数据处理; dbproxy:一般…

FreeRTOS学习笔记—③RTOS内存管理篇(正在更新中)

二、RTOS的核心功能 RTOS的核心功能块主要分为任务管理、内核管理、时间管理以及通信管理4部分,框架图如下所示: (1)任务管理:负责管理和调度任务的执行,确保系统中的任务能够按照预期运行。 (…

【SpringBoot】使用Nacos服务注册发现与配置管理

前提:需要提前部署好nacos服务,这里可以参考我的文章:Windows下Nacos安装与配置 0. 版本信息 Spring Boot3.2.8Spring Cloud2023.0.1Spring Cloud alibaba2023.0.1.0nacos2.3.2本地安装的nacos2.3.0 Spring Boot、Spring Cloud、Spring Clo…

黑盒闪清 v2.9.9 体积小巧,简洁高效的手机清理神器

黑盒闪清APP是安卓手机上的一款优质文件管理器,拥有存储分析、文件分类、大文件扫描、空文件夹扫描等功能,应用无广告、无推送,完全免费使用,让你手机中的文件管理就跟在电脑上管理一样简单。 链接:https://pan.quark…

C语言学习笔记 Day16(文件管理--下)

Day16 内容梳理: C语言学习笔记 Day14(文件管理--上)-CSDN博客 C语言学习笔记 Day15(文件管理--中)-CSDN博客 目录 Chapter 10 文件操作 10.5 文件状态 10.6 文件的随机读写 fseek()、rewind() (1&…

对同一文件夹下所有excel表进行相同操作(数据填充、删除、合并)

背景引入:如图所示,笔者需要对数十个表格的银行日记账工作簿合并成一个工作簿,以便与本月银行流水进行核对。 为了方便银行日记账与银行流水进行核对,需要再每个村或小组的表格中,将村或小组的名称放在J列。 clear c…

Java | Leetcode Java题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isSubsequence(String s, String t) {int n s.length(), m t.length();int[][] f new int[m 1][26];for (int i 0; i < 26; i) {f[m][i] m;}for (int i m - 1; i > 0; i--) {for (int j 0; j…

9月4日C++作业

#include <iostream> #include <string> using namespace std; class Human {private:string name;int age;public:Human(){} //无参构造函数//有参构造函数Human(string i_name,int i_age):name(i_name),age(i_age){cout<<"调用了Human有参构…

一篇文章讲清楚什么是Spring AOP

目录 1、什么是代理&#xff1f; 1.1静态代理 1.2动态代理 2、什么是AOP&#xff1f; 3、AOP术语名词介绍 4、Spring AOP框架使用教程 5、Spring AOP框架细节讲解 1、什么是代理&#xff1f; 在讲解AOP之前&#xff0c;我们要先了解下什么是代理。 代理是二十四种设计…

Flutter集成Firebase框架

本文档的插件版本 flutter&#xff1a;3.19.4dart版本&#xff1a;3.3.2 firebase_core&#xff1a;2.30.0 firebase&#xff1a;13.7.3flutterfire&#xff1a;1.0.0 前言 Flutter集成Firebase框架要完成以下内容 在Firebase网页端创建一个项目在终端全局安装Firebase工具&…

中断管理笔记

1、异常与中断的基本概念 异常是指任何打断处理器正常执行&#xff0c;并且迫使处理器进入一个由有特权的特殊指令执行的事件。 异常可以分为两类&#xff1a;同步异常和异步异常。 由内部事件&#xff08;像处理器指令运行产生的事件&#xff09;引起的异常称为同步异常。异…

雅思7分相当于六级多少?雅思考试怎么备考才能到7分?

雅思7分相当于六级多少&#xff1f;雅思考试怎么备考才能到7分? 六级500分也不能和雅思7分相提并论&#xff0c;毕竟两者压根不在一个层级。楼主两月自学雅思获得8分&#xff0c;系统总结了雅思速成的提分秘籍&#xff0c;跟着我的方法走&#xff0c;两月屠鸭7分问题不大。1.6…

你做的SEO为什么效果不够好?

SEO&#xff08;Search Engine Optimization&#xff09;即搜索引擎优化&#xff0c;指在不同的搜索引擎中&#xff0c;按照相应的规则与机制提高网站在特定的搜索引擎中的自然排名。作为对产品和服务进行数字宣传营销的重要手段&#xff0c;SEO已然成为各企业提高网站曝光和流…

AI生产力工具暑期迎来大爆发 极光数据:夸克新增用户规模领先

9月3日&#xff0c;极光旗下月狐数据发布《AI生产力工具暑期发展报告》。数据显示&#xff0c;AI生产力工具在用户侧呈现高速增长态势&#xff0c;总体月活跃用户数量达1.7亿。其中&#xff0c;夸克APP实现暑期新增用户数量行业第一&#xff0c;凭借大模型、数据、场景等优势&a…

Java中实现写Word文档

背景&#xff1a;通过java代码&#xff0c;往docx文档中写入标题和段落。 依赖的maven包&#xff1a; <dependency> <groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version> </depend…

【技术前沿】智能反向寻车解决方案:提升停车场用户体验与运营效率

亲爱的技术员及停车场管理者们&#xff0c;您是否曾遇到过车主在庞大的停车场中迷失方向&#xff0c;耗费大量时间寻找爱车的困境&#xff1f;这不仅影响了车主的停车体验&#xff0c;也无形中增加了停车场的管理难度和运营成本。本文专为解决这一痛点而生&#xff0c;介绍最新…