当前位置: 首页 > news >正文

GPIO(通用输入/输出)、中断(hal库)

目录

GPIO(通用输入/输出)(hal库)

GPIO工作模式

推挽输出(Push-Pull Output)

开漏输出(Open-Drain Output)

复用推挽输出(Alternate Function Push-Pull Output)

复用开漏输出(Alternate Function Open-Drain Output)

上拉输入(Pull-Up Input)

下拉输入(Pull-Down Input)

浮空输入(Floating Input)

模拟输入(Analog Input)

 GPIO的HAL库接口函数

中断

NVIC(嵌套向量中断控制器)

 EXTI的 HAL库常用接口函数


GPIO(通用输入/输出)(hal库)

在 STM32 微控制器中,GPIO(通用输入/输出)端口是一个重要的硬件模块,用于进行各种输入和输出操作。

GPIO工作模式

推挽输出(Push-Pull Output)

  • 定义:推挽输出模式允许 GPIO 引脚输出高电平或低电平,能在两个状态之间迅速切换。
  • 特点:在逻辑高电平时,GPIO 引脚被驱动到 VDD 电压;在逻辑低电平时,GPIO 引脚被拉到 GND 电压。适用于驱动外部设备,如 LED 或开关。
  • GPIO_MODE_OUTPUT_PP

开漏输出(Open-Drain Output)

  • 定义:开漏输出模式允许 GPIO 引脚在输出逻辑低电平时驱动到 GND 电压,而在输出逻辑高电平时,GPIO 引脚会“浮空”,需外部上拉电阻拉到 VDD 电压。
  • 特点:适用于需要多路器或共用总线的场合,例如 I2C 总线。
  • GPIO_MODE_OUTPUT_OD

复用推挽输出(Alternate Function Push-Pull Output)

  • 定义:复用推挽输出模式允许 GPIO 引脚用于特定的外设功能,如定时器、USART 等,且可以推挽输出信号。
  • 特点:适用于需要特定外设功能的应用,如 PWM 输出。
  • GPIO_MODE_AF_PP;

复用开漏输出(Alternate Function Open-Drain Output)

  • 定义:复用开漏输出模式允许 GPIO 引脚用于特定的外设功能,同时采用开漏输出模式。
  • 特点:适用于需要共用总线或 I2C 总线等应用。
  • GPIO_MODE_AF_OD

上拉输入(Pull-Up Input)

  • 定义:上拉输入模式将 GPIO 引脚设置为输入,并在内部启用上拉电阻,以确保在未连接到信号源时,输入引脚保持高电平。
  • GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式
  • GPIO_InitStruct.Pull = GPIO_PULLUP; // 上拉电阻

下拉输入(Pull-Down Input)

  • 定义:下拉输入模式将 GPIO 引脚设置为输入,并在内部启用下拉电阻,以确保在未连接到信号源时,输入引脚保持低电平。
  • GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式
  • GPIO_InitStruct.Pull = GPIO_PULLDOWN; // 下拉电阻

浮空输入(Floating Input)

  • 定义:浮空输入模式将 GPIO 引脚设置为输入,不使用内部上拉或下拉电阻。
  • GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式
  • GPIO_InitStruct.Pull = GPIO_NOPULL; // 无上拉/下拉

模拟输入(Analog Input)

  • 定义:模拟输入模式用于将 GPIO 引脚配置为模拟模式,以便进行 ADC(模数转换)操作。
  • GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; // 模拟模式
  • GPIO_InitStruct.Pull = GPIO_NOPULL; // 无上拉/下拉

 GPIO的HAL库接口函数

中断

NVIC(嵌套向量中断控制器)

NVIC (嵌套向量中断控制器)是 STM32 微控制器的中断控制器,管理所有中断请求的优先级和响应。使用 NVIC 可以配置中断优先级并使能中断。

 EXTI的 HAL库常用接口函数

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Chrome 中的 RCE 会在 JIT 编译器中产生不正确的副作用
  • 【Linux】匿名管道
  • TypeSript8 泛型学习
  • 【算法进阶1】贪心算法、背包问题(0-1背包、分数背包)、拼接最大数字问题、活动选择问题
  • 6 - Linux PXE高效批量网络装机
  • CacheLoader和装饰器模式
  • 无刷电机、有刷电机和步进电机的区别
  • 初赛笔记1
  • OD C卷 - 项目排期/最少交付时间
  • 新手学习打怪之编译安装LAMP和LNMP
  • PCL 点云ISS关键点提取算法
  • 《陈天奇:机器学习科研的十年》阅读笔记
  • SP: leopold (v1.2)
  • 《通义千问AI落地—下》:WebSocket详解
  • 学习记录:js算法(十六):四数之和
  • 2019.2.20 c++ 知识梳理
  • docker-consul
  • ERLANG 网工修炼笔记 ---- UDP
  • nginx 负载服务器优化
  • Selenium实战教程系列(二)---元素定位
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 基于webpack 的 vue 多页架构
  • 前端_面试
  • 使用SAX解析XML
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 我建了一个叫Hello World的项目
  • 再次简单明了总结flex布局,一看就懂...
  • 字符串匹配基础上
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 正则表达式-基础知识Review
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #1015 : KMP算法
  • #define、const、typedef的差别
  • #NOIP 2014# day.1 T2 联合权值
  • #QT(一种朴素的计算器实现方法)
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言)fread与fwrite详解
  • (Git) gitignore基础使用
  • (libusb) usb口自动刷新
  • (搬运以学习)flask 上下文的实现
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (算法)N皇后问题
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)基于IDEA的JAVA基础12
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (原創) 物件導向與老子思想 (OO)
  • (转)nsfocus-绿盟科技笔试题目
  • ./configure,make,make install的作用
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则