【嵌入式学习笔记】嵌入式入门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,即通用输入输出端口,简称GPIO,作用是负责采集外部器件的信息或者控制外部器件工作,即输入输出。 2.STM32 GPIO简介 2.1.GPIO特点 不同型号,IO口数量可能不一样&#x…...

[SQL挖掘机] - 多表连接: union
介绍: sql中的union是用于合并两个或多个select语句的结果集的操作符。它将多个查询的结果合并成一个结果集,并自动去除重复的行。请注意,union操作要求被合并的查询返回相同数量和类型的列。 用法: union的基本语法如下: select_stateme…...

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

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

vue使用driver.js完成页面引导的功能
需求:给客户做一个页面引导,教客户怎么做 效果: 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供电。 小文件:零拷贝技术 传输大文件:异步 IO 、直接 IO:如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io直接io (123条消息) Linux网络编程 | 彻底搞懂…...

在CSDN学Golang云原生(Kubernetes集群安全)
一,ABAC授权模式 Kubernetes ABAC(Attribute-Based Access Control)授权模式是一种基于属性的访问控制模型,它可以根据用户或组的属性决定是否允许他们访问 Kubernetes 集群中的资源。 在使用 ABAC 授权模式时,管理员…...

浅谈深度神经网络
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) 受到人脑的启发,可模仿生物神经元相互传递信号。神经网络就是由神经元组成…...

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

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

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(9)-Fiddler如何设置捕获Https会话
1.简介 由于近几年来各大网站越来越注重安全性都改成了https协议,不像前十几年前直接是http协议直接裸奔在互联网。还有的小伙伴或者童鞋们按照上一篇宏哥的配置都配置好了,想大展身手抓一下百度的包,结果一试傻眼了,竟然毛都没有…...

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

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

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(12)-Fiddler设置IOS手机抓包,你知多少???
1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求。 Fiddler 能捕获Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。同理也可以截获iOS设备发出的请求,比如 iPhone、iPad 和 MacBook 等苹…...

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

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

23款奔驰GLE450豪华型升级AMG直瀑式中网,战斗感立马提升了一个档次
奔驰GLE450豪华型升级AMG竖杠中网前进气格栅,AMG中网竖杠格栅,镀铬饰条呈圆弧状,色泽均衡,质感顺滑,极富冲击力。AMG专属字标,与中网卡扣装配紧密,凸显AMG的身份象征,点睛之笔又不显…...

ALLEGRO之Logic
本文主要讲述ALLEGRO的Logic菜单。 (1)Net Logic:暂不清楚; (2)Net Schedule:暂不清楚; (3)AssignDifferential Pair:暂不清楚; &a…...

算法leetcode|64. 最小路径和(rust重拳出击)
文章目录 64. 最小路径和:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 64. 最小路径和: 给定一个包含非负整数的 m x n 网…...

css---实现文本超过两行时显示省略号(...)的效果
可以使用CSS中的text-overflow属性配合-webkit-line-clamp属性来实现。以下是一种常见的方式: .text-container {overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2; /* 设置最大显示行数 */-webkit-box-orient: vertical;text-overflow: ellipsis; }在…...

30-使用RocketMQ做削峰处理
1、增加排队功能的思路 在出票模块里,一个消费者拿到了某个车次锁,则该车次下所有的票都由他来出,一张一张的出,知道所有的订单都出完。 2、实现排队出票功能 2.1、 修改发送到MQ消息的内容 修改MQ消息内容,只需要通知出哪天和哪个车次的票(即:组成锁的内容),不需要…...

如何用非root账号安装k8s集群
在大多数情况下,为了安装 Kubernetes(K8s)集群,需要具有root权限或者以root身份执行某些操作,例如安装软件包和配置系统级别的设置。然而,你可以通过以下方法在非root账号下安装K8s集群: 使用Mi…...

windows环境安装elasticsearch+kibana并完成JAVA客户端查询
下载elasticsearch和kibana安装包 原文连接:https://juejin.cn/post/7261262567304298554 elasticsearch官网下载比较慢,有时还打不开,可以通过https://elasticsearch.cn/download/下载,先找到对应的版本,最好使用迅…...

高精度算法
基础模板: (411条消息) 高精度加法_会笑的小熊的博客-CSDN博客 (411条消息) 高精度乘法_会笑的小熊的博客-CSDN博客 (411条消息) 高精度减法_会笑的小熊的博客-CSDN博客 目录 P1601 AB Problem(高精) P1303 A*B Problem P1009 [NOIP1998 普…...

DragGAN:用崭新的方式进行图像处理
该项目的论文被SIGGRAPH 2023 收录,论文以 StyleGAN2 架构为基础,实现了 “Drag” 关键点就能轻松 P 图的效果。 https://github.com/XingangPan/DragGAN https://vcai.mpi-inf.mpg.de/projects/DragGAN/ 目录 原图1测试一测试二测试三 原图2测试一测试…...

语音播放 linux
调整语音音量大小 pactl list sinks pactl set-sink-volume 15 12345 # 15可以改成别的id安装pip install pyttsx3 sudo apt-get update sudo apt-get install espeak sudo ldconfig pip3 install pyttsx3代码 import pyttsx3 import threading def speak_work(text):engine…...

各大互联网公司面经分享:Java 全栈知识 +1500 道大厂面试真题
这篇文章给大家分享一下我遇到的一些质量较高的面试经历,具体经过就不多说了,就把面试题打出来供各位读者老哥参考如有不全的地方,各位海涵。 猿辅导 八皇后问题 求二叉树的最长距离(任意两个节点的路径 中最长的) lru 算法的实现 设计一…...

【LeetCode】剑指offer礼物的最大价值
礼物的最大价值 题目描述算法分析编程代码 链接: 礼物的最大价值 题目描述 算法分析 编程代码 class Solution { public:int maxValue(vector<vector<int>>& grid) {int m grid.size();int n grid[0].size();vector<vector<int>> dp(m1,vector…...

应用层协议——https
文章目录 1. HTTPS 是什么2. 什么是"加密"3. 常见的加密方式4. 数据摘要 && 数字签名5. HTTPS 的工作过程探究5.1 方案1 - 只使用对称加密5.2 方案2 - 只使用非对称加密5.3 方案3 - 双方都使用非对称加密5.4 方案4 - 非对称加密 对称加密5.5 中间人攻击5.6 …...

Emacs之实现鼠标/键盘选中即拷贝外界内容(一百二十)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...