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

【嵌入式学习笔记】嵌入式入门1——GPIO

1.什么是GPIO

General Purpose Input Output,即通用输入输出端口,简称GPIO,作用是负责采集外部器件的信息或者控制外部器件工作,即输入输出。
在这里插入图片描述

2.STM32 GPIO简介

2.1.GPIO特点

  • 不同型号,IO口数量可能不一样,可通过选型手册快速查询
  • 快速翻转,每次翻转最快只需要两个时钟周期(F1最高速度可以到50Mhz)
  • 每个IO口都可以做中断
  • 支持8种工作模式

2.2.GPIO电气特性

  • STM32工作电压范围——2 V ≤ VDD ≤ 3.6 V

  • GPIO识别电压范围——COMS端口-0.3V ≤ VIL ≤ 1.164V,1.833V ≤ VIH ≤ 3.6V,部分兼容TTL

  • GPIO输出电流——单个IO,最大25mA

详情参考STM32的数据手册

2.3.GPIO引脚分布

STM32引脚类型:电源引脚、晶振引脚、复位引脚、下载引脚、BOOT引脚、GPIO引脚

在这里插入图片描述
在这里插入图片描述
IO引脚分布特点:按组存在、组数视芯片而定、每组最多16个IO引脚

3.IO端口基本结构介绍

  • F1系列IO端口基本结构
    ① 保护二极管
    ② 内部上拉、下拉电阻
    ③ 施密特触发器
    ④ P-MOS & N-MOS管
    在这里插入图片描述

  • F4/F7/H7系列IO端口基本结构
    在这里插入图片描述

  • 施密特触发器:施密特触发器就是一种整形电路,可以将非标准方波,整形成方波
    在这里插入图片描述

  • P-MOS & N-MOS管:MOS管是压控型元件,通过控制栅源电压( Vgs )来实现导通或关闭
    在这里插入图片描述

4.GPIO的八种模式分析

模式特点及应用
浮空输入输入用,完全浮空,状态不定
上拉输入输入用,用内部上拉,默认是高电平
下拉输入输入用,用内部下拉,默认是低电平
模拟功能ADC、DAC
开漏输出软件IIC的SDA、SCL等
推挽输出驱动能力强,25mA(max),通用输出
开漏复用片上外设功能(硬件IIC 的SDA、SCL引脚等)
推挽复用片上外设功能(SPI 的SCK、MISO、MOSI引脚等

4.1.浮空输入

在这里插入图片描述

4.2.上拉输入

在这里插入图片描述

4.3.下拉输入

在这里插入图片描述

4.4.模拟功能

在这里插入图片描述

4.5.开漏输出

在这里插入图片描述

4.6.推挽输出

在这里插入图片描述

4.7.开漏复用

在这里插入图片描述

4.8.推挽复用

在这里插入图片描述

4.9.F4/F7/H7系列和F1系列的GPIO差异点

  • F1在输出模式,禁止使用内部上下拉,F4/F7/H7在输出模式,可以使用内部上下拉
  • 不同系列IO翻转速度可能不同

【STM32能输出5V的电平吗?——可以,兼容5V的引脚可以】

5.GPIO寄存器介绍

在F1系列和F4/F7/F7系列的GPIO中,选择GPIO模式的寄存器不同,控制输入输出的寄存器相同
在这里插入图片描述

5.1.F1/F4/F7/H7相同GPIO寄存器

  • 端口输入数据寄存器IDR——用于判断IO引脚的电平
    在这里插入图片描述
  • 端口输出数据寄存器ODR——用于设置IO引脚输出的电平
    在这里插入图片描述
  • 端口位设置/清除寄存器BSRR——用于设置ODR寄存器
    在这里插入图片描述

5.2.F1系列特有GPIO寄存器

  • 端口配置低/高寄存器CRL/CRH——设置工作模式、输出速度
    在这里插入图片描述

5.3.F4/F7/H7系列特有GPIO寄存器

  • GPIO 端口模式寄存器MODER——用于设置模式
    在这里插入图片描述
  • GPIO 端口输出类型寄存器OTYPER——用于设置输出类型
    在这里插入图片描述
  • GPIO 端口输出速度寄存器OSPEEDR——用于设置IO的输出速度
    在这里插入图片描述
  • GPIO 端口上拉/下拉寄存器(PUPDR)用于设置上拉/下拉电阻
    在这里插入图片描述

5.4.F1系列与F4/F7/H7系列工作模式配置

  • F1系列
    输入上拉/下拉电阻通过ODR寄存器来设置
    在这里插入图片描述
  • F4/F7/H7系列
    在这里插入图片描述

5.5.ODR和BSRR寄存器控制输出的区别

ST官方给的答案:使用ODR,在读和修改访问之间产生中断时,可能会发生风险;BSRR无风险。建议使用BSRR控制输出

ODR修改:读->->写
GPIOB->ODR |= 1 << 3;         	/* PB3 = 1 */
BSRR修改:写 
GPIOB->BSRR = 0x00000008;      	/* PB3 = 1 */

6.通用外设驱动模型(四步法)

在这里插入图片描述

7.GPIO配置步骤

  • 使能时钟 __HAL_RCC_GPIOx_CLK_ENABLE()

  • 设置工作模式 HAL_GPIO_Init()

  • 设置输出状态(可选) HAL_GPIO_WritePin() 、HAL_GPIO_TogglePin()

  • 读取输入状态(可选) HAL_GPIO_ReadPin()
    在这里插入图片描述

  • 关键结构体

// F1
typedef struct 
{ uint32_t Pin;        	/* 引脚号 */ uint32_t Mode;   		/* 模式设置 */ uint32_t Pull;       	/* 上拉下拉设置 */ uint32_t Speed;  		/* 速度设置 */ 
} GPIO_InitTypeDef;
// F4/F7/H7
typedef struct 
{ uint32_t Pin;    		/* 引脚号 */ uint32_t Mode;        /* 模式设置 */ uint32_t Pull;        /* 上拉下拉设置 */ uint32_t Speed;       /* 速度设置 */uint32_t Alternate; 	/* 复用功能 */
} GPIO_InitTypeDef;

8.编程实战:点亮一个LED灯/跑马灯

分析IO输出模式——推挽输出
在这里插入图片描述

9.编程实战:通过一个按键控制一个LED灯亮灭

在这里插入图片描述
在这里插入图片描述
【编程实战代码暂不贴出】

相关文章:

【嵌入式学习笔记】嵌入式入门1——GPIO

1.什么是GPIO General Purpose Input Output&#xff0c;即通用输入输出端口&#xff0c;简称GPIO&#xff0c;作用是负责采集外部器件的信息或者控制外部器件工作&#xff0c;即输入输出。 2.STM32 GPIO简介 2.1.GPIO特点 不同型号&#xff0c;IO口数量可能不一样&#x…...

[SQL挖掘机] - 多表连接: union

介绍: sql中的union是用于合并两个或多个select语句的结果集的操作符。它将多个查询的结果合并成一个结果集&#xff0c;并自动去除重复的行。请注意&#xff0c;union操作要求被合并的查询返回相同数量和类型的列。 用法: union的基本语法如下&#xff1a; select_stateme…...

AI面试官:SQL Server数据库(三)

AI面试官:SQL Server数据库(三) 当涉及到.NET工程师中关于SQL Server数据库的面试题时,主要考察候选人的数据库知识、SQL查询能力、数据库设计和优化等方面。 文章目录 AI面试官:SQL Server数据库(三)31. 数据库并发控制是什么?数据库有哪些常见的并发控制机制?32. 什…...

python刑事案卷图片转pdf

分两步&#xff0c;第一步是转图片&#xff0c;第二步是合并。 # -*- coding: utf-8 -*- import glob,os from PIL import Imagedef convert_to_pdf(path):# 打开图片文件img Image.open(path)# 将图片转换为 PDF&#xff0c;并保存到同名文件pdf_path os.path.splitext(path…...

vue使用driver.js完成页面引导的功能

需求&#xff1a;给客户做一个页面引导&#xff0c;教客户怎么做 效果&#xff1a; driverjs官方文档 一.安装driver.js # Using npm npm install driver.js# Using pnpm pnpm install driver.js# Using yarn yarn add driver.js 二.在自己需要引导的页面上引入driver.js i…...

学习中遇到的好博客

c日志工具之——log4cpp ECU唤醒的本质就是给ECU供电。 小文件&#xff1a;零拷贝技术 传输大文件&#xff1a;异步 IO 、直接 IO&#xff1a;如何高效实现文件传输&#xff1a;小文件采用零拷贝、大文件采用异步io直接io (123条消息) Linux网络编程 | 彻底搞懂…...

在CSDN学Golang云原生(Kubernetes集群安全)

一&#xff0c;ABAC授权模式 Kubernetes ABAC&#xff08;Attribute-Based Access Control&#xff09;授权模式是一种基于属性的访问控制模型&#xff0c;它可以根据用户或组的属性决定是否允许他们访问 Kubernetes 集群中的资源。 在使用 ABAC 授权模式时&#xff0c;管理员…...

浅谈深度神经网络

Deep neural networks are completely flexible by design, and there really are no fixed rules when it comes to model architecture. -- David Foster 前言 神经网络 (neural network) 受到人脑的启发&#xff0c;可模仿生物神经元相互传递信号。神经网络就是由神经元组成…...

『C语言初阶』第六章-操作符详解

前言 今天小羊又来为铁汁们更新C语言初阶的操作符详解&#xff0c;我们在平时写代码时总会写到一些算术操作符和赋值操作符&#xff0c;可是当铁汁们遇到其他的操作符时&#xff0c;就会望而却步&#xff0c;甚至写出一些bug&#xff0c;所以这期我给铁汁们带来新鲜出炉的操作…...

企业知识文档管理+群晖nas安全云存储

企业知识管理系统&#xff0c;利用软件系统或其他工具的企业管理方法&#xff0c;利用软件系统或其他工具&#xff0c;对组织中大量的有价值的方案、策划、成果、经验等知识进行分类存储和管理&#xff0c;积累知识资产避免流失&#xff0c;促进知识的学习、共享、培训、再利用…...

​《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(9)-Fiddler如何设置捕获Https会话​

1.简介 由于近几年来各大网站越来越注重安全性都改成了https协议&#xff0c;不像前十几年前直接是http协议直接裸奔在互联网。还有的小伙伴或者童鞋们按照上一篇宏哥的配置都配置好了&#xff0c;想大展身手抓一下百度的包&#xff0c;结果一试傻眼了&#xff0c;竟然毛都没有…...

对比CahtGPT Bard Claude2对中文的理解

对比CahtGPT Bard Claude2对中文的理解 今天简单测试了一下目前这三个很火的模型对中文的理解能力 简单问题 鲁迅和周树人的关系 Bard CahtGPT Claude 介绍一下平凡的世界这本书 Bard CahtGPT...

安全测试国家标准解读——并发程序安全

本系列文章主要围绕《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》进行讲解&#xff0c;该标准是2020年4月28日&#xff0c;由国家市场监督管理总局、国家标准化管理委员会发布&#xff0c;2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理&#xff…...

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(12)-Fiddler设置IOS手机抓包,你知多少???

1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求&#xff0c;也可以截获各种智能手机发出的HTTP/ HTTPS 请求。 Fiddler 能捕获Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。同理也可以截获iOS设备发出的请求&#xff0c;比如 iPhone、iPad 和 MacBook 等苹…...

MySQL中锁的简介——行级锁

1.行级锁概念及分类 可通过以下语句查看意向锁和行锁的加锁情况&#xff1a; select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;InnoDB的行锁是针对于索引加的锁&#xff0c;不通过索引条件检索数据&#xff0…...

4 个最常见的自动化测试挑战及应对措施

有人说&#xff1a;“杂乱无章的自动化只会带来更快的混乱。”不仅更快&#xff0c;而且是更严重、更大的混乱。如果使用得当&#xff0c;自动化可以成为测试团队中令人惊叹的生产力助推器和系统的质量增强器。自动化测试的关键是要正确运用&#xff0c;这是初始最困难的部分。…...

23款奔驰GLE450豪华型升级AMG直瀑式中网,战斗感立马提升了一个档次

奔驰GLE450豪华型升级AMG竖杠中网前进气格栅&#xff0c;AMG中网竖杠格栅&#xff0c;镀铬饰条呈圆弧状&#xff0c;色泽均衡&#xff0c;质感顺滑&#xff0c;极富冲击力。AMG专属字标&#xff0c;与中网卡扣装配紧密&#xff0c;凸显AMG的身份象征&#xff0c;点睛之笔又不显…...

ALLEGRO之Logic

本文主要讲述ALLEGRO的Logic菜单。 &#xff08;1&#xff09;Net Logic&#xff1a;暂不清楚&#xff1b; &#xff08;2&#xff09;Net Schedule&#xff1a;暂不清楚&#xff1b; &#xff08;3&#xff09;AssignDifferential Pair&#xff1a;暂不清楚&#xff1b; &a…...

算法leetcode|64. 最小路径和(rust重拳出击)

文章目录 64. 最小路径和&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 64. 最小路径和&#xff1a; 给定一个包含非负整数的 m x n 网…...

css---实现文本超过两行时显示省略号(...)的效果

可以使用CSS中的text-overflow属性配合-webkit-line-clamp属性来实现。以下是一种常见的方式&#xff1a; .text-container {overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2; /* 设置最大显示行数 */-webkit-box-orient: vertical;text-overflow: ellipsis; }在…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...