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.rhkb.cn/news/301879.html

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

相关文章

【React】Ant Design社区扩展库之分割面板:react-resizable-panels

主角&#xff1a;react-resizable-panels 简介&#xff1a;来之Ant Design官方文档社区精选组件 1、效果 2、环境 react-resizable-panels: ^2.0.16next: 14.1.3react: ^18 3、安装 # npm npm install react-resizable-panels# yarn yarn add react-resizable-panels# pnpm …

AI编程005/ 逆向生成mysql的建表语句

1/ 通过insert into 语句生成建表语句 有些时候我们能获取到表的insert语句&#xff0c;但是没有表结构。我们可以借助AI工具&#xff0c;让其逆向生成mysql的建表语句。 提示词如下&#xff1a; 根据下面的SQL语句&#xff0c;逆向生存mysql的建表语句&#xff0c;每个字段…

文心一言上线声音定制功能;通义千问开源模型;openAI又侵权?

文心一言上线定制专属声音功能 百度旗下 AI 聊天机器人文心一言上线新功能&#xff0c;用户录音一句话&#xff0c;即可定制声音。 使用这项功能需要使用文心一言 App。在创建智能体中&#xff0c;点击创建自己的声音&#xff0c;朗读系统提示的一句话&#xff0c;等候几秒钟时…

【大数据】大数据概论与Hadoop

目录 1.大数据概述 1.1.大数据的概念 1.2.大数据的应用场景 1.3.大数据的关键技术 1.4.大数据的计算模式 1.5.大数据和云计算的关系 1.6.物联网 2.Hadoop 2.1.核心架构 2.2.版本演进 2.3.生态圈的全量结构 1.大数据概述 1.1.大数据的概念 大数据即字面意思&#x…

网络工程师笔记18(关于网络的一些基本知识)

网络的分类 介绍计算机网络的基本概念&#xff0c;这一章最主要的内容是计算机网络的体系结构-ISO 开放系统互连参考模型&#xff0c;其中的基本概念&#xff0c;例如协议实体、协议数据单元&#xff0c;服务数据单元、面向连接的服务和无连接的服务、服务原语、服务访问点、相…

Vscode 中调试Django程序

调试介绍: ​​​​​​​Explore the debugger Debug/调试 可以让我们在特定的代码行上暂停程序的运行。当程序暂停时&#xff0c;我们可以查看变量的数值&#xff0c;在“Debug控制台”中运行代码&#xff0c;或利用“Debug”工具提供的其他功能。启动Debugger/调试器会自动…

迭代器模式

前言 迭代器模式就是分离了集合对象的遍历行为&#xff0c;抽象出一个迭代器类来负责&#xff0c;这样既可以做到不暴露集合的内部结构&#xff0c;又可让外部代码透明地访问集合内部的数据。 迭代器模式在访问数组、集合、列表等数据时&#xff0c;尤其是数据库数据操作时&am…

PSO-SVM,基于PSO粒子群算法优化SVM支持向量机回归预测(多输入单输出)-附代码

PSO-SVM是一种结合了粒子群优化&#xff08;Particle Swarm Optimization, PSO&#xff09;算法和支持向量机&#xff08;Support Vector Machine, SVM&#xff09;的方法&#xff0c;用于回归预测问题。下面我将解释PSO-SVM的原理&#xff1a; 1、支持向量机&#xff08;SVM&a…

系统架构评估_3.ATAM方法

架构权衡分析方法&#xff08;Architecture Tradeoff Analysis Method&#xff0c;ATAM&#xff09;是在SAAM的基础发展起来的&#xff0c;主要针对性能、实用性、安全性和可修改性&#xff0c;在系统开发之前&#xff0c;对这些质量属性进行评价和折中。 &#xff08;1&#x…

10倍提效!用ChatGPT编写系统功能文档。。。

系统功能文档是一种描述软件系统功能和操作方式的文档。它让开发团队、测试人员、项目管理者、客户和最终用户对系统行为有清晰、全面的了解。 通过ChatGPT&#xff0c;我们能让编写系统功能文档的效率提升10倍以上。 ​《Leetcode算法刷题宝典》一位阿里P8大佬总结的刷题笔记…

计算机网络-TCP连接建立阶段错误应对机制

错误现象 丢包 网络问题&#xff1a;网络不稳定可能导致丢包&#xff0c;例如信号弱或干扰强。带宽限制可能导致路由器或交换机丢弃包&#xff0c;尤其是在高流量时段。网络拥塞时&#xff0c;多个数据流竞争有限的资源&#xff0c;也可能导致丢包。缓冲区溢出&#xff1a;TC…

Astra深度相机在Ubuntu18.04系统下实现相机标定

问题&#xff1a; 当使用Astra相机的启动的指令启动相机后&#xff0c;使用rviz查看相机所发布的rgb数据时&#xff0c;在终端会出现如下的提示信息&#xff1a; Camera calibration file /home/car/.ros/camera_info/rgb_Astra_Orbbec.yaml not found. Camera calibration fil…

(学习日记)2024.04.11:UCOSIII第三十九节:软件定时器

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

nacos分布式程序开发实例

1.通过windows docker desktop 完成 nacos 的安装/启动/配置 &#xff08;1&#xff09;先安装docker desktop docker-toolbox-windows-docker-for-windows-stable安装包下载_开源镜像站-阿里云 &#xff08;2&#xff09;配置docker 国内镜像源 Docker 镜像加速 | 菜鸟教程…

携程旅行 abtest

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章…

Linux|从 STDIN 读取 Awk 输入

简介 在之前关于 Awk 工具的系列文章中&#xff0c;主要探讨了如何从文件中读取数据。但如果你希望从标准输入&#xff08;STDIN&#xff09;中读取数据&#xff0c;又该如何操作呢&#xff1f; 在本文中&#xff0c;将介绍几个示例&#xff0c;展示如何使用 Awk 来过滤其他命令…

WPF使用MVVM,将Image中的图片绑定到OpenCVSharp中的Mat类型

看了很多帖子&#xff0c;代码复制过去都是报错的&#xff0c;查看了OpenCVSharp.Extensions的底层&#xff0c;发现用法在WPF中已经进行了更改&#xff0c;原本需要从Mat->Bitmap->BitmapImage&#xff0c;简化成了Mat->BitmapSource这一个过程&#xff0c;所以这也是…

基于单片机水塔水位检测控制系统设计

**单片机设计介绍&#xff0c; 基于单片机水塔水位检测控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机水塔水位检测控制系统设计的主要目标是实现水塔水位的自动监测与控制&#xff0c;确保水塔内的水位始…

J基于微信小程序的电影订票、电影购票小程序

文章目录 1 **摘 要**2 技术简介**3 系统功能设计****第4章 系统设计****4.1系统结构设计** 第5章 系统实现**5.1管理员服务端功能模块**5.2用户客户端功能模块 结 论6 推荐阅读7 源码获取&#xff1a; 1 摘 要 本文从管理员、用户的功能要求出发&#xff0c;电影订票系统小程…

一文读懂RISC-V与ARM

RISC-V和ARM是近年来备受关注的两种处理器架构。RISC-V是一种基于精简指令集计算(RISC)原理的开源指令集架构(ISA)&#xff0c;而ARM是一种专有ISA&#xff0c;由于其长期存在于嵌入式系统和移动设备中&#xff0c;已成为嵌入式系统和移动设备的主导选择。市场以及多年积累的信…