STM32_3(GPIO)

news2024/9/21 4:32:05

GPIO简介

  • GPIO(General Purpose Input Output)通用输入输出口
  • 8种输入输出模式
  • 输出模式可控制端口输出高电平,驱动LED、蜂鸣器、模拟通信协议输出时许等
  • 输入模式可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

GPIO基本结构

GPIO位结构

最左边是寄存器,中间是驱动器,右边是引脚。

上面是输入,下面是输出。

先说上面,VDD为上拉电阻,VSS为下拉电阻。

上拉电阻:默认为高电平输入模式。

下拉电阻:默认为低电平输入模式。

施密特触发器:只有高于上限或低于下限,输出才发生变化,类似于下图。

   通过设置位设置和位清除寄存器,如果对某一位置1操作,在设置寄存器的对应位写1即可,剩下不需要设置的置0。

  推挽输出模式下,P-MOS和N-MOS均有效,数据寄存器为1时,上管导通,下管断开,输出直接接到VDD,就是输出高电平。数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,就是输出低电平。

  开漏输出模式下,P-MOS无效,只有N-MOS在工作,数据寄存器为1时,下管断开,输出相当于断开,也就是高阻模式,数据寄存器为0时,下管导通,输出直接接到VSS,输出低电平。开漏模式可以作为通信协议的驱动方式。

8种模式

  • 浮空输入:可读取引脚电平,若引脚悬空,则电平不确定
  • 上拉输入:可读取引脚电平,内部连接上拉电阻,悬空时默认为高电平
  • 下拉输入:可读取引脚电平,内部连接下拉电阻,悬空时默认为低电平
  • 模拟输入:GPIO无效,引脚直接接入内部ADC
  • 开漏输出:可输出引脚电平,高电平为高阻态,低电平接VSS
  • 推挽输出:可输出引脚电平,高电平为VDD,低电平接VSS
  • 复用开漏输出:由片上外设控制,可输出引脚电平,高电平为高阻态,低电平接VSS
  • 复用推挽输出:由片上外设控制,可输出引脚电平,高电平为VDD,低电平接VSS

按键简介

  按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动。

传感器模块介绍

  传感器模块:传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出。

为什要接上拉,如果PA0没有接上拉,就会变成浮空,所以必须要接上拉。

这个既可以接上拉也可也接浮空,上拉就是双电阻,更稳定,相应的损耗也大一些。

复习C语言

C语言数据类型

C语言宏定义

关键字:#define
用途:用一个字符串代替一个数字,便于理解,防止出错;提取程序中经常出现的参数,便于快速修改
定义宏定义:
    #define ABC 12345
引用宏定义:
    int a = ABC;    //等效于int a = 12345;

C语言typedef

关键字:typedef
用途:将一个比较长的变量类型名换个名字,便于使用
定义typedef:
     typedef unsigned char uint8_t;
引用typedef:
     uint8_t a;    //等效于unsigned char a;

C语言结构体

关键字:struct
用途:数据打包,不同类型变量的集合
因为结构体变量类型较长,所以通常用typedef更改变量类型名引用结构体成员:
typedef struct{

  char x;

  int y;

  float z;

} StructName_t;
 

C语言枚举

关键字:enum
用途:定义一个取值受限制的整型变量,用于限制变量取值范围;宏定义的集合
定义枚举变量:


因为枚举变量类型较长,所以通常用typedef更改变量类型名引用枚举成员:

代码部分

配置流程

1、时钟开启;

2、配置端口。

GPIO配置部分

1    // 时钟开启
2     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
3 
4     // 配置端口
5     GPIO_InitTypeDef GPIO_InitStruct;
6     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;                    // 推挽输出
7     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;                           
8     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;                    
9     GPIO_Init(GPIOA, &GPIO_InitStruct);

为什么要用APB2,可以点击RCC_APB2PeriphClockCmd查看定义,可以看到,所以用APB2。

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

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

相关文章

AD7021C 触摸感应加灯光调节芯片IC 可用于触摸台灯、触摸玩具灯等

AD7021C触摸感应 IC 是为实现人体触摸界面而设计的集成电路。可替代机械式轻触按键,实现防水防尘、密封隔离、坚固美观的操作界面。使用该芯片可以实现 LED 灯光亮度调节,方案所需的外围电路简单,操作方便。确定好灵敏度选择电容&#xff…

【MybatisPlus】简介与使用

MyBatisPlus 1.简介 MyBatisPlus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生 官网:https://baomidou.com/ MyBatis-Plus特性: 无侵入:只…

主机dbeaver访问gitlab容器中的pg

映射5432端口- 5431:5432或者从docker客户端查看 version: 3.6 services:web:image: gitlab/gitlab-ce:latestrestart: alwayshostname: localhostenvironment:GITLAB_OMNIBUS_CONFIG: |external_url http://localhost:8929gitlab_rails[gitlab_shell_ssh_port] 2224ports:- …

【漏洞复现】DPTech VPN存在任意文件读取漏洞

漏洞描述 DPtech是在网络、安全及应用交付领域集研发、生产、销售于一体的高科技企业。DPtech VPN智能安全网关是迪普科技面向广域互联应用场景推出的专业安全网关产品,集成了IPSec、SSL、L2TP、GRE等多种VPN技术,支持国密算法,实现分支机构…

详解Java的static关键字

文章目录 🎄静态方法🌺静态方法和非静态方法对比🛸静态方法实例🛸非静态方法实例 🌹static关键字⭐static变量⭐static代码块 🎄静态方法 不依赖于对象实例:静态方法不需要依赖于任何对象实例&…

【JavaEE】操作系统与进程

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…

我们对凌鲨的一次重构

在10月我们对凌鲨进行了一次重构,把所有鸡肋的功能都删除了。 新版本界面 老版本界面 我们干掉的功能 移除沟通频道功能 沟通频道类似slack功能,用于团队沟通。由于国内有大量的沟通软件,比如企业微信,飞书,钉钉等。…

振弦传感器土压力计的安装及埋设方法

振弦传感器土压力计的安装及埋设方法 土压力计是一种测量土体内侧压力的仪器,常用于土体工程的安全监测和评估。以下是土压力计的安装及埋设方法: 1. 选择合适的位置:土压力计的安装位置应该在土体内的高应力区域,以便能够准确测…

深眸科技以自研算法+先进硬件,创新打造AI视觉一体化解决方案

工业视觉软硬件一体化解决方案:是以工业AI视觉技术为核心,通过集成工业相机等视觉硬件、电控系统和机械系统等自动化设备以及算法平台等软件应用,为工业自动化降本增效提质。 深眸科技为进一步巩固和加强技术领先优势,创新打造的…

Elasticsearch:将最大内积引入 Lucene

作者:Benjamin Trent 目前,Lucene 限制 dot_product (点积) 只能在标准化向量上使用。 归一化迫使所有向量幅度等于一。 虽然在许多情况下这是可以接受的,但它可能会导致某些数据集的相关性问题。 一个典型的例子是 Cohere 构建的嵌入&#x…

java的继承特性和方法重写

java的继承特性和方法重写 Java的继承特性是一种面向对象编程的重要概念,它允许我们基于已有的类创建新的类,并且保留了已有的类的一些特性。这是通过使用"继承"这个关键词来实现的,新创建的类称为子类(subclass&#…

c语言:十进制转任意进制

思路&#xff1a;如十进制转二进制 就是不断除二求余在除二求余&#xff0c;然后将余数从下到写出来&#xff0c;这样&#xff0c;10011100就是156的二进制 这里举例一个六进制的代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int …

uniapp实现表单弹窗

uni.showModal({title: 删除账户,confirmColor:#3A3A3A,cancelColor:#999999,confirmText:确定,editable:true,//显示content:请输入“delete”删除账户,success: function (res) {console.log(res)if(res.confirm){if(res.contentdelete){console.log(123123123213)uni.setSto…

pmp敏捷十二个考点!考前必背!

自从PMP更换了新的考纲&#xff0c;考试中对于敏捷项目管理的知识比重越来越大。因此&#xff0c;掌握敏捷知识成为备考的重点。为了帮助大家更好地掌握敏捷知识点&#xff0c;我整理了12个敏捷考点&#xff0c;希望能对大家有所帮助&#xff01; 一、敏捷宣言十二原则改写如下…

低代码:数字化转型趋势下的快速开发方式

目录 一、前言 二、低代码是什么&#xff1f; 三、低代码如何提高生产力 开发工具JNPF介绍 产品分析 1可视化应用开发 2流程管理 3整个平台源码合作 四、小结 一、前言 通常&#xff0c;开发一个大型的企业级系统&#xff0c;公司往往需要大量的人力做支持后盾&#xff0c;如需…

音频采集的相关基础知识

本文引注: https://zhuanlan.zhihu.com/p/652629744 1.麦克风的种类 (1)模拟麦克风 ECM麦克风&#xff1a;驻极体电容麦克风(ECM)&#xff0c;典型的汽车ECM麦克风是一种将ECM单元与小型放大器电路整合在单个外壳中的装置。放大器提供一个模拟信号&#xff0c;其电压电平允许…

亚马逊买家号注册用手机好还是邮箱好

在亚马逊上注册买家号可以用邮箱也可以用手机号&#xff0c;但是具体哪种好&#xff0c;我们可以根据以下因素来进行选择&#xff1a; 1、手机号 短信验证&#xff1a;亚马逊可以通过短信向你发送验证码&#xff0c;以确保你的身份。使用手机号可能更方便接收这些验证码。 安…

sizeof和strlen的区别

目录 一、 sizeof 二、 strlen 三、 sizeof 和 strlen的对比 一、 sizeof 在学习操作符的时候&#xff0c;我们学习了 sizeof &#xff0c; sizeof 计算变量所占内存内存空间大小的&#xff0c;单位是字节&#xff0c;如果操作数是类型的话&#xff0c;计算的是使⽤类型创…

linux CentOS7.6安装jenkins(小白版本)

前言 本人是一个前端开发者&#xff0c;由于有时候需要发版自己的东西&#xff0c;所以想搞一个Jenkins玩玩&#xff0c;看了网上好多教程&#xff0c;但是都不是针对小白的&#xff0c;比如linux怎么输入&#xff0c;怎么结束&#xff0c;自己也是搞了好久踩了好多坑 所以记录…

电商领域的三大沉疴难题?实在智能RPA来帮你药到病除!

在电商市场规模迅速扩大的当下&#xff0c;厂家们为了保持自身的竞争力&#xff0c;纷纷走上了数智化转型的道路&#xff0c;明白学会使用自动化利器才是制胜之道。 如今从产业的生产线到运营商、物流运输、商品售前、商品售后&#xff0c;实在RPA在电商平台的应用已经十分广泛…