stm32GPO的相关操作

news2024/11/26 15:43:30

GPIO的使用

  • 1.GPIO八种工作模式
    • 1.1 上拉输入
    • 1.2 下拉输入
    • 1.3 浮空输入
    • 1.4 模拟输入
    • 1.5 推挽输出
    • 1.6 开漏输出
    • 1.7 复用推挽输出
    • 1.8 复用开漏输出
  • 2.相关寄存器
    • 2.1 寄存器配置IO
  • 3.相关库函数

1.GPIO八种工作模式

在这里插入图片描述

保护二极管的作用:用来保护IO,一般情况IO的范围在0~3.3V,有些IO可以支持5V,IO输入电压大于3.3V保护二极管VDD导通,IO输入电压小于0V,保护二极管VSS导通。

1.1 上拉输入

在这里插入图片描述

1.配置相关寄存器

IO 和上拉电阻连接,此时输入为高电平

TTL肖特基触发器用来稳定输入电平,TTL肖特基触发器会提供两个参考电压,输入电压高于高参考电压,则为高电平,输入电压低于低参考电压,则为低电平,低于高参考电压,高于低参考电压,则保持不变(原来是高电平就保持高电平,反之一样)

1.2 下拉输入

1.配置相关寄存器

IO 和 下拉电阻连接,此时输入为低电平

1.3 浮空输入

1.配置相关寄存器

IO 即不与上拉电阻连接,也不与下拉电阻连接

1.4 模拟输入

在这里插入图片描述

1.配置相关寄存器

上拉输入、下拉输入、浮空输入,输入的信号都为数字信号

模拟输入,输入的信号为模拟信号,GPIO无效,引脚直接接入内部ADC

一般用于ADC采样

1.5 推挽输出

在这里插入图片描述

1.配置相关寄存器

使P-MOS 导通 N-MOS 断开 此时IO连接的是VDD,所以输出高电平

使P-MOS 断开 N-MOS 导通 此时IO连接的是VSS,所以输出低电平

推挽输出具有一定的电压与电流驱动能力,可以直接驱动一些合适的元件工作

1.6 开漏输出

1.配置相关寄存器

开漏模式只有N-MOS工作 P-MOS一直处于断开状态

IO 输出高电平 N-MOS断开,此时IO的状态为高阻态

IO 输出低电平 N-MOS导通,此时IO的状态为低电平

开漏输出没有驱动能力,需要依靠外部电路进行驱动

推挽输出开漏输出
高电平P-MOS导通 N-MOS端口 输出3.3VP-MOS 断开 N-MOS 断开 高阻态
低电平P-MOS 断开 N-MOS 导通 输出 0VP-MOS 断开 N-MOS 导通 输出 0V
优点可以直接输出 3.3V配合外部电路 更加灵活
缺点只能输出 3.3V高电平是高阻态 无法输出电流

1.7 复用推挽输出

在这里插入图片描述

由片上外设控制,高电平接VDD,低电平接VSS

1.8 复用开漏输出

由片上外设控制,高电平为高阻态,低电平接VSS

2.相关寄存器

2.1 寄存器配置IO

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输出模式与输出速度是通过GPIOX_CRL与GPIOX_CRH两个寄存器来配置的,通过4个位来配置1个IO,CNF1,MODE1,CNF0,,MODE0

例1:将PC1设置成上拉输入

{GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=(u32)8<<4; 
GPIOC->ODR&=0XFFFFFFFD;GPIOC->ODR|=(u32)1<<1;}

1.GPIOC->CRL&=0XFFFFFF0F; //将PC1引脚配置的寄存器先清零

2.GPIOC->CRL|=(u32)8<<4; //1000B左移四位与CRL求,PC1引脚配置寄存器被设置为1000B(此时端口被设置为 输入模式)

3.GPIOC->ODR&=0XFFFFFFFD; // 将PC1引脚输出的寄存器先清零

4.GPIOC->ODR|=(u32)1<<1; // PC1输出寄存器设置为1 (上拉为1,下拉为0)

例2:将PC1设置成50MHz通用输出

{GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=(u32)3<<4; 
GPIOC->ODR&=0XFFFFFFFD;GPIOC->ODR|=(u32)1<<1;}

1.GPIOC->CRL&=0XFFFFFF0F; //将PC1引脚配置的寄存器先清零

2.GPIOC->CRL|=(u32)8<<4; //0011B左移四位与CRL求,PC1引脚配置寄存器被设置为0011B(此时端口被设置为 通用输出模式)

3.GPIOC->ODR&=0XFFFFFFFD; // 将PC1引脚输出的寄存器先清零

4.GPIOC->ODR|=(u32)1<<1; // PC1输出寄存器设置为1 (1或0多可以)

配置IO先查看表17,然后再设置CRL或CRH寄存器

MODE1,MODE 为 00 是输入

MODE1,MODE 为01,10,11是输出

GPIOx_ODR 寄存器 如果IO配置为输出模式,则设置成1或0

GPIOx_ODR 寄存器 如果IO配置为输入模式则用来设置上拉输入,还是下拉输入

3.相关库函数

void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)//初始化
u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin) //读取指定端口管脚的输入
u16 GPIO_ReadInputData(GPIO_TypeDef* GPIOx)	//读取指定的 GPIO 端口输入
u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin) //读取指定端口管脚的输出
u16 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)	//读取指定的 GPIO 端口输出
void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin) //设置指定的数据端口位
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)//清除指定的数据端口位   
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin, BitAction BitVal)//设置或者清除指定的数据端口位
void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)//向指定 GPIO 数据端口写入数据
    

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

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

相关文章

图书馆自助借书机怎么借书

图书馆自助借书机借书流程如下&#xff1a; 1. 找到图书馆自助借书机&#xff0c;在机器上选择借书功能。 2. 输入自己的借书卡号或者身份证号码&#xff0c;如果是第一次借书&#xff0c;可能需要进行注册。 3. 输入图书的条形码号码&#xff0c;可以通过扫描条形码或者手动输…

Verilog语法——按位取反“~“和位宽扩展的优先级

前言 先说结论&#xff0c;如下图所示&#xff0c;在Verilog中“~ ”按位取反的优先级是最高的&#xff0c;但是在等式计算时&#xff0c;有时候会遇到位宽扩展&#xff0c;此时需要注意的是位宽扩展的优先级高于“~”。 验证 仿真代码&#xff0c;下面代码验证的是“~”按位取…

2024年上半年WSK-PETS5报名及考试时间公布

4月1日&#xff0c;中国教育考试网发布了2024年上半年全国外语水平考试WSK&#xff08;PETS5&#xff09;的报名及考试通知&#xff0c;为方便关注者&#xff0c;知识人网小编特做全文转载。 国家公派留学人员全国外语水平考试&#xff08;WSK-PETS5&#xff09;成绩作为国家留…

蓝桥杯刷题 深度优先搜索-[NewOJ P1158]N皇后(C++)

题目描述 n皇后问题&#xff1a;n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 上面布局用序列2 4 6 1 3 5表示&#xff0c;第i个数字表示第i行皇后放的列号。 按照这种格式输出前3个解&#xff0c;并统计总解数。 输入格式 输入一个正整数n&a…

memcached集群

一、介绍 memcache本身没有像redis所具备的数据持久化功能&#xff0c;但是可以通过做集群同步的方式&#xff0c;让各memcache服务器的数据进行同步&#xff0c;从而实现数据的一致性&#xff0c;即保证各memcache的数据是一样的&#xff0c;即使有任何一台memcache发生故障&…

CTK插件框架学习-服务工厂(06)

CTK插件框架学习-信号槽(05)https://mp.csdn.net/mp_blog/creation/editor/137240105 一、服务工厂定义 注册插件时使用服务工厂注册&#xff0c;使用getService根据调用者插件资源文件内容获取在服务工厂内的对应实现在服务工厂中可以知道是哪个插件正在调用服务工厂懒汉模式…

Java数组详解

​TOC 第一章、数组的概念介绍 1.1&#xff09;数组的概念 ①数组就是用来储存数据的容器,可以存储同一种类型的数据&#xff0c;是同一种数据类型的集合。实现对这些数据的统一管理。如果数组中存储的是基本类型数据&#xff0c;我就不能往里面存引用类型数据。数组中存储的…

Java-Tomcat

一、web补充技术 ①&#xff1a;B/S架构 主流的方式&#xff0c;只要有浏览器即可。编程方式直接基于socket即可 ②&#xff1a;javascript 简称js&#xff0c;早期只是实现在客户端的浏览器的动态效果&#xff0c;但服务端不会解释运行&#xff0c;所以本质上是静态资源。 …

峥嵘九载,逐云而上:青果乔迁新址,乘风破浪再起新篇

4月1日&#xff0c;近百名员工和诸多合作伙伴齐聚&#xff0c;共同见证了青果九周年庆典暨乔迁仪式这一里程碑式的时刻。 新起点&#xff0c;新征程&#xff0c;再启航&#xff01; 以新为序&#xff0c;共赴新征程 在典礼上&#xff0c;青果创始人和高管分别发表了致辞&#…

python实现OCR:pytesseract和pyddleocr(附代码)

文章目录 背景pytesseractpaddleocr百度apipaddleocr 背景 OCR是光学字符识别&#xff08;Optical Character Recognition&#xff09;的缩写&#xff0c;通过扫描等光学输入方式和文字识别将图片中的文字提取出来&#xff0c;非常适用于提取网络截图或扫描pdf等文件里的文本。…

2014最新AI智能系统ChatGPT网站源码+Midjourney绘画网站源码+搭建部署教程文档

一、文章前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持…

关于OpenFeign的返回类型包装问题

在一天夜里。我在使用feign的调用时&#xff0c;突然出现了一点点问题。 就是对于feign类型的包装问题。产生了疑问。 在后来&#xff0c;也就是今天。在网上取取经。看到了一个答案。说&#xff1a;feign的调用会有一个编码器和解码器。 使用feign的解码器。他的原理也很简…

c++有趣代码(游戏)(续集)

19.忍者三(参考:c++高级游戏集游戏_c++游戏库-CSDN博客) #include<bits/stdc++.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> #define Nor if(B[b].x<5) B[b].x=5; #define Out1 Bx1-

【JavaEE框架技术】spring-1

目录 一、使用maven管理spring项目 1.1搭建开发环境 1.1.1修改settings.xml文件 1.1.2把该文件拷入.m2目录 1.1.3打开ecplise&#xff0c;建立maven项目 1.1.4向pom.xml文件中添加spring的坐标&#xff1a; 1.4.1.1代码含义 1.4.1.2代码说明 1.2创建spring配置文件 二…

7.1.4 Selenium 爬取京东商品信息实战

目录 1、实战内容 2、思路 3、分析 url 4、开始操作 1、得到 Cookies 2、访问页面&#xff0c;得到 response 3、解析页面 4、存入 MySQL 5、1-3步总代码 1、实战内容 爬取京东笔记本电脑商品的信息(如&#xff1a;价格、商品名、评论数量)&#xff0c;存入 MySQL 中…

RAG基础知识及应用

简单介绍下RAG的基础知识和RAG开源应用 “茴香豆" 一. RAG 基础知识 1. RAG工作原理 RAG是将向量数据库和大模型问答能力的有效结合&#xff0c;从而达到让大模型的知识能力增加的目的。首先将知识源存储在向量数据库中&#xff0c;当提出问题时&#xff0c;去向量数据库…

ENVI实战-影像的下载和矢量边界裁剪

实验1&#xff1a;学会使用不同的遥感数据检索和下载平台 目的&#xff1a;学会使用不同的数据平台&#xff0c;检索和下载所需的遥感数据。 过程&#xff1a; ①基于地理空间数据云的数据检索和下载方法&#xff1a; A.网站进入&#xff1a;网络搜索&#xff1a;https://w…

Notepad++软件安装及配置说明

Notepad是 Windows操作系统下的一套文本编辑器&#xff0c;有完整的中文化接口及支持多国语言编写的功能。 Notepad功能比 Windows自带记事本强大&#xff0c;除了可以用来制作一般的纯文字说明文件&#xff0c;也十分适合编写计算机程序代码。Notepad不但可以显示行号&#xf…

ABC库存分类管理法

ABC库存分类管理法&#xff1f; ABC分类法是根据物品在技术或经济方面的主要特征&#xff0c;进行分类排队&#xff0c;将分析对象划分成A、B、C三类&#xff0c;从而有区别地确定管理方式的分析方法。 ABC分类法来源与定义 1951年美国通用公司经理戴克将“关键的少数和次要的…

day76 jquery

知识点: 1 在HTML中引入jQuery 2 jQuery中就绪函数 3 jQuery中选择器 4 使用jQuery获取表单元素的值 及标签中间的内容 5 jQuery中获取标签属性 6 jQuery设置和获取标签样式 ----------------------------------- 一 在HTML中引入jQuery 1 1) 把jQue…