stm32GPO的相关操作

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.mzph.cn/news/801433.shtml

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

相关文章

【Linux】TCP编程{socket/listen/accept/telnet/connect/send}

文章目录 1.TCP接口1.1socket文档 1.2listen拓&#xff1a;端口号8080 1.3accept拓&#xff1a;今天全局函数 1.4读写接口1.5telnet1.一个客户端2.两个客户端 1.6ulimit -a1.7常识回顾1.8connect1.9拓&#xff1a;客户端的ip和地址什么时候被分配&#xff1f;1.10拓&#xff1a…

设计模式之命令模式讲解

概念&#xff1a;命令模式&#xff08;Command Pattern&#xff09;又称行动&#xff08;Action&#xff09;模式或交易&#xff08;Transaction&#xff09;模式。将一个请求封装成一个对象&#xff0c;从而让你使用不同的请求把客户端参数化&#xff0c;对请求排队或者记录请…

数据结构:冒泡排序,快速排序,插入排序

冒泡排序&#xff0c;每次只排一个&#xff0c;像鱼吐泡泡一样&#xff0c;从数组最后开始两两交换&#xff0c;一次只找到一个当前最小的&#xff0c;放到第一个,第二个...位置. T(n)O(n的平方&#xff09;,有序O(n) S&#xff08;n&#xff09;O&#xff08;1&#xff09; #i…

使用 Spring Boot 和 Maven 引入本地 Jar 包

背景 在 Java 开发中&#xff0c;有时候我们需要引入本地的 Jar 包到项目中&#xff0c;以满足特定的功能需求。本文将以引入 id 生成器为例&#xff0c;介绍如何在 Spring Boot 项目中使用 Maven 管理本地 Jar 包。 准备工作 创建 libs 目录&#xff1a; 在项目根目录下创建…

spring eureka 服务实例实现快速下线快速感知快速刷新配置解析

背景 默认的Spring Eureka服务器&#xff0c;服务提供者和服务调用者配置不够灵敏&#xff0c;总是服务提供者在停掉很久之后&#xff0c;服务调用者很长时间并没有感知到变化。或者是服务已经注册上去了&#xff0c;但是服务调用方很长时间还是调用不到&#xff0c;发现不了这…

pandas,polars,pyspark的df对象常见用法对比

案例背景 最近上班需要处理的都是百万&#xff0c;千万级的数据&#xff0c;pandas的性能已经不够看了&#xff08;虽然它在处理数据上是真的很好用&#xff09;&#xff0c;公司都是用的polar和pyspark&#xff0c;我最近也学习了一些&#xff0c;然后写篇文章对比一下他们的…

达梦使用disql登录数据库显示“未连接”

基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例问题&#xff1a;达梦数据库在使用disql登录时&#xff0c;显示“未连接”。 指定了IP和端口号还是连接异常。 […

CentOS如何做端口映射?

在今天的技术发展中&#xff0c;越来越多的应用需要跨越网络进行远程管理和控制。为了实现这一目标&#xff0c;端口映射技术被广泛应用于各个领域。其中&#xff0c;【天联】作为一种性能稳定、安全可靠的端口映射工具&#xff0c;在各种应用场景中得到了广泛的应用和认可。 结…

python+django+flask+vue贫困地区儿童资助网站22pk7

Python 中存在众多的 Web 开发框架&#xff1a;Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近几年较为流行的&#xff0c;大概也就是 Flask 和 Django 了 一开始&#xff0c;本文就对系统内谈到的基本知识&#xff0c;从整体上进行了描述&#xff0c…

SEO优化艺术:精细化技巧揭示与搜索引擎推广全面战略解读

SEO&#xff08;搜索引擎优化&#xff0c;Search Engine Optimization&#xff09;是一种网络营销策略&#xff0c;旨在通过改进网站内外的各项元素&#xff0c;提升网站在搜索引擎自然搜索结果中的排名&#xff0c;从而吸引更多目标用户访问网站&#xff0c;增加流量&#xff…

面试算法-154-搜索二维矩阵 II

题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,…

鸿蒙ArkUI声明式学习:【UI资源管理】

OpenHarmony 应用的资源分类和资源的访问以及应用开发使用的像素单位以及各单位之间相互转换的方法。 资源分类 移动端应用开发常用到的资源比如图片&#xff0c;音视频&#xff0c;字符串等都有固定的存放目录&#xff0c;OpenHarmony 把这些应用的资源文件统一放在 resourc…

python+django教师业绩考评考核评分系统flask

在设计过程中&#xff0c;将参照一下国内外的一些同类网站&#xff0c;借鉴下他们的一些布局框架&#xff0c;将课题要求的基本功能合理地组织起来&#xff0c;形成友好、高效的交互过程。开发的具体步骤为&#xff1a;   第一步&#xff0c;进行系统的可行性分析&#xff0c…

java实现TCP交互

服务器端 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.PriorityQueue; import java.util.Scanner;public class TCP_Serv…

【Leetcode每日一题】 递归 - 二叉树剪枝(难度⭐⭐)(50)

1. 题目解析 题目链接&#xff1a;814. 二叉树剪枝 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 想象一下&#xff0c;你有一堆层层叠叠的积木&#xff0c;你想从底部开始&#xff0c;把那些标记为0的积木拿走。如…

C++奇迹之旅:我与类和对象相遇

文章目录 &#x1f4dd;面向过程和面向对象初步认识&#x1f320; 类&#x1f309;类的引入&#x1f309;类的定义 &#x1f320;类的访问限定符&#x1f320;访问限定符 &#x1f320;类的两种定义方式&#x1f309;封装 &#x1f6a9;总结 &#x1f4dd;面向过程和面向对象初…

spring cloud gateway openfeign 联合使用产生死锁问题

spring cloud gateway openfeign 联合使用产生死锁问题&#xff0c;应用启动的时候阻塞卡住。 spring.cloud 版本如下 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><vers…

国际数字影像产业园以数字影像技术,重构文创生活

国际数字影像产业园区&#xff0c;作为树莓集团与成都市金牛区人民政府合作的重点项目&#xff0c;于2023年3月正式在金牛区落地生根。这一园区不仅是第五代产业园区的代表&#xff0c;更是数字影像相关产业服务的特色园区&#xff0c;其独特的定位和宏大的愿景“以数字影像技术…

达梦关键字(如:XML,EXCHANGE,DOMAIN,link等)配置忽略

背景&#xff1a;在使用达梦数据库时&#xff0c;查询SQL中涉及XML,EXCHANGE,DOMAIN,link字段&#xff0c;在达梦中是关键字&#xff0c;SQL报关键词不能使用的错误。 解决办法&#xff1a; 配置达梦安装文件E:\MyJava\dmdbms\data\DAMENG\dm.ini 忽略这些关键词&#xff0c;…

景联文科技:为AI大模型提供高质海量训练数据

在全球AI浪潮的推动下&#xff0c;大量训练数据已成为AI算法模型发展和演进中的关键一环。 艾瑞咨询数据显示&#xff0c;包括数据采集、数据处理&#xff08;标注&#xff09;、数据存储、数据挖掘等模块在内的AI基础数据服务市场&#xff0c;将在未来数年内持续增长。 预计到…