GD32/STM32系列GPIO工作模式

2024-06-06 12:36

本文主要是介绍GD32/STM32系列GPIO工作模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

知不足而奋进 望远山而前行


目录

文章目录

前言

浮空输入

上拉输入

下拉输入

模拟输入

推挽输出

开漏输出

复用推挽输出

复用开漏输出

附录(了解)

总结


前言

在嵌入式系统开发中,对于GPIO(通用输入输出端口)的配置和使用是至关重要的。不同的GPIO配置方式可以实现不同的功能,包括输入(浮空、上拉、下拉、模拟输入)和输出(推挽、开漏、复用推挽输出、复用开漏输出)等。正确的GPIO配置可以确保信号的稳定传输和处理,使系统能够正常工作并与外部设备进行有效通信。


浮空输入

// 时钟初始化
rcu_periph_clock_enable(RCU_GPIOx);
// 配置GPIO模式
gpio_mode_set(GPIOx, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_x);
  • RCU_GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIO_PIN_x:具体是哪个引脚。(0~15)

上拉输入

// 时钟初始化
rcu_periph_clock_enable(RCU_GPIOx);
// 配置GPIO模式
gpio_mode_set(GPIOx, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_x);
  • RCU_GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIO_PIN_x:具体是哪个引脚。(0~15)

下拉输入

// 时钟初始化
rcu_periph_clock_enable(RCU_GPIOx);
// 配置GPIO模式
gpio_mode_set(GPIOx, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN, GPIO_PIN_x);
  • RCU_GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIO_PIN_x:具体是哪个引脚。(0~15)

模拟输入

// 时钟初始化
rcu_periph_clock_enable(RCU_GPIOx);
// 配置GPIO模式
gpio_mode_set(GPIOx, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_x);
  • RCU_GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIO_PIN_x:具体是哪个引脚。(0~15)

推挽输出

// 1. 时钟初始化
rcu_periph_clock_enable(RCU_GPIOx);
// 2. 配置GPIO 输入输出模式
gpio_mode_set(GPIOx, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_x);
// 3. 配置GPIO 模式的操作方式
gpio_output_options_set(GPIOx, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_x);
  • RCU_GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIO_PIN_x:具体是哪个引脚。(0~15)

开漏输出

// 1. 时钟初始化
rcu_periph_clock_enable(RCU_GPIOx);
// 2. 配置GPIO 输入输出模式
gpio_mode_set(GPIOx, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_x);
// 3. 配置GPIO 模式的操作方式
gpio_output_options_set(GPIOx, GPIO_OTYPE_OD, GPIO_OSPEED_MAX, GPIO_PIN_x);
  • RCU_GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIO_PIN_x:具体是哪个引脚。(0~15)

通常开漏时,需要外部上拉,当然内部电路也可以控制上拉。

复用推挽输出

// 1. 时钟初始化
rcu_periph_clock_enable(RCU_GPIOx);
// 2. 配置GPIO 输入输出模式
gpio_mode_set(GPIOx, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_x);
// 3. 配置GPIO 模式的操作方式
gpio_output_options_set(GPIOx, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_x);
// 4. 复用功能
gpio_af_set(GPIOx, GPIO_AF_x, GPIO_PIN_x);
  • RCU_GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIO_PIN_x:具体是哪个引脚。(0~15)
  • GPIO_AF_x:具体复用什么功能。(0-15)

复用开漏输出

// 1. 时钟初始化
rcu_periph_clock_enable(RCU_GPIOx);
// 2. 配置GPIO 输入输出模式
gpio_mode_set(GPIOx, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_x);
// 3. 配置GPIO 模式的操作方式
gpio_output_options_set(GPIOx, GPIO_OTYPE_OD, GPIO_OSPEED_MAX, GPIO_PIN_x);
// 4. 复用功能
gpio_af_set(GPIOx, GPIO_AF_x, GPIO_PIN_x);
  • RCU_GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIOx: 具体是哪个端口。(A,B,C,D,E,F,G,H,I)
  • GPIO_PIN_x:具体是哪个引脚。(0~15)
  • GPIO_AF_x:具体复用什么功能。(0-15)

通常开漏时,需要外部上拉,当然内部电路也可以控制上拉。

附录(了解)


总结

通过对GPIO的不同配置方式进行了解和掌握,可以更好地满足系统对输入输出信号的需求。在配置GPIO输入时,可以选择浮空输入、上拉输入、下拉输入或模拟输入,以适应不同的接口要求和外部信号条件。而在配置GPIO输出时,推挽输出和开漏输出可以控制外部引脚电平的输出方式,同时也可以通过复用功能实

这篇关于GD32/STM32系列GPIO工作模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036129

相关文章

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化: