STM32:GPIO配置和使用

news2025/1/12 0:00:34

目录

一、GPIO简介

1.1 GPIO的输入输出模式

1.1.1 输入模式

1.1.2 输出模式

二、GPIO的使用

2.1 引脚初始化

2.2 引脚使用


注:型号:STM32F407ZET6

一、GPIO简介

    GPIO:通用输入输出接口
    STM32上有A~H共8组,其中A~G7组每组有0~15号共16个引脚,H组有两个引脚。

1.1 GPIO的输入输出模式

1.1.1 输入模式

     1. 上拉输入
         上拉电阻:信号线通过电阻连接高电平,信号的初始值是高电平。
        

     2. 下拉输入
             下拉电阻:信号线通过电阻连接低电平,信号的初始值为低电平。
            

     3. 浮空输入
         浮空:信号线不连接高低电平,信号电压不确定。
     5. 模拟输入

1.1.2 输出模式

     1. 开漏输出(上拉或下拉)
     2. 复用开漏输出(上拉或下拉)
     3. 推挽输出(上拉或下拉)
     4. 复用推挽输出(上拉或下拉)

二、GPIO的使用

2.1 引脚初始化

    初始化步骤:
         1. 初始化一个GPIO配置结构体
            头文件(定义位置):#include "stm32f4xx_gpio.h"

         2. 使能时钟总线
       
            头文件:#include "stm32f4xx_rcc.h"
            原型:void  RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);
            参数:
             - RCC_AHB1Periph    外围设备,可选项在定义的注释中 
             - NewState        时钟新状态,ENABLE、DISABLE

         3. 配置这个GPIO配置结构体
             - GPIO_Pin    初始化的引脚号                
                 可选项:GPIO_Pin_0~GPIO_Pin_15,GPIO_Pin_All
             - GPIO_Mode    输入输出模式
                 - GPIO_Mode_IN    输入模式
                 - GPIO_Mode_OUT    输出模式
                 - GPIO_Mode_AF    复用模式
                 - GPIO_Mode_AN    模拟模式
             - GPIO_Speed    工作速度(速度越快,功耗越高)
                 - GPIO_Low_Speed        低速,2MHz
                 - GPIO_Medium_Speed    中速,25MHz
                 - GPIO_Fast_Speed        快速,50MHz
                 - GPIO_High_Speed        高速,100MHz
             - GPIO_OType    输出模式
                - GPIO_OType_PP    推挽输出
                 - GPIO_OType_OD    开漏输出
             - GPIO_PuPd
                 - GPIO_PuPd_NOPULL        浮空
                 - GPIO_PuPd_UP                上拉
                 - GPIO_PuPd_DOWN          下拉

         4. 调用初始化函数完场初始化
             头文件:#include "stm32f4xx_gpio.h"
            原型:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
            参数:
             - GPIOx    引脚所在组,GPIOA~GPIOG
             - GPIO_InitStruct    配置结构体的指针

示例代码:

//按键初始化
void Init_Key(void)
{
    //初始化配置结构体
    GPIO_InitTypeDef Init_Struct_KEY0;
    
    //使能时钟
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
    
    //结构体配置
    Init_Struct_KEY0.GPIO_Mode = GPIO_Mode_IN;
    Init_Struct_KEY0.GPIO_Pin = GPIO_Pin_0;
    Init_Struct_KEY0.GPIO_PuPd = GPIO_PuPd_UP;
    Init_Struct_KEY0.GPIO_Speed = GPIO_High_Speed;
    
    //调用函数完成初始化
    GPIO_Init(GPIOA,&Init_Struct_KEY0);
}

//LED灯初始化
void Tiit_LED(void)
{
    //初始化配置结构体
    GPIO_InitTypeDef Init_Struct_LED0_1;
    
    //使能时钟
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
    
    //结构体配置
    Init_Struct_LED0_1.GPIO_Mode = GPIO_Mode_OUT;        //输出模式
    Init_Struct_LED0_1.GPIO_Pin = GPIO_Pin_9;            //9号引脚
    Init_Struct_LED0_1.GPIO_OType = GPIO_OType_PP;        //推挽输出
    Init_Struct_LED0_1.GPIO_PuPd = GPIO_PuPd_NOPULL;    //浮空
    Init_Struct_LED0_1.GPIO_Speed = GPIO_High_Speed;    //高速
    
    //调用函数完成初始化
    GPIO_Init(GPIOF,&Init_Struct_LED0_1);
    
    //关灯
    GPIO_SetBits(GPIOF,GPIO_Pin_9);
}    


2.2 引脚使用

    头文件:#include "stm32f4xx_gpio.h"
    读引脚状态:
        读一个引脚:uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
        读一组引脚:uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
    设置引脚状态:
        置位:void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
        复位:void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

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

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

相关文章

WPS作图常见问题

表格 1、打开WPS表格,切换至“开始”选项卡,单击“绘图边框”按钮,如下图。 2、鼠标变成如下图一样的笔后,按照斜线表头的方向拉动鼠标,然后就给单元格添加了一道斜线,如下图。 WPS表格如何随文字移动 1、…

java ssm成绩查询管理系统idea开发mysql数据库web结构计算机java编程

一、源码特点 idea ssm成绩查询管理系统是一套完善的web设计系统mysql数据库springMVC框架mybatis,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 java ssm成绩查询管理系统idea开发mysql数据…

智慧校园管理平台系统源码,云平台、人脸识别、物联网技术、信息发布技术

智慧校园云平台源码,智慧电子班牌源码 电子班牌系统是全功能智慧管理平台系统,电子班牌系统是以在校人员信息、出勤管理和班级信息展示为主体,为学校教育行业量身设计的一款集云平台、网络数据实时通信技术、物联网技术、智能控制技术、信息…

Google Sites快速做出一個簡單的網頁

新手網站架設的神器 Google Sites協作平台,為什麼這樣子說呢? 因為新手入門款以Google Sites協作平台練習,認識網站架設的基礎概念,接著再轉往進階班的Wordpress網頁設計。比較會循序漸進。 二來Google Sites協作平台網站架設費用…

使用docker搭建RocketMQ(非集群搭建官方镜像)

之前在使用 RocketMQ 官方的包在搭建的时候,发现好多问题,什么修改内存大小,然后启动 broker 报错,类似 service not available now, maybe disk full 等等… 最后决定还是重新用 docker 搭建下,感觉这样子玩坏了&…

MySQL数据库的数据备份与数据恢复

MySQL数据库的数据备份与恢复主要有3种方法,前两种都是MySQL dump命令,第三种则是用Navicat工具直接备份。相比而言,第三种方法更加简单! 1 方法一(MySQL dump命令) 1.1 登录MySQL [roothurys22 ~]# mysq…

优势分析- 性格测试

盖洛普 免费的人格测试 | 16Personalities [转][类似我] 某作者结合自己性格对盖洛普的推广_个人渣记录仅为自己搜索用的博客-CSDN博客 塞利格曼先生设计的优势测量表格.docx-全文可读 谁知道在哪里可以做盖洛普在线测试题? - 知乎 为什么强烈建议你做正版盖洛普…

【数据库数据恢复】raid5+Sql Server数据库数据恢复案例

数据库数据恢复环境: 5块磁盘组建RAID5,划分LUN供windows服务器使用; windows服务器上部署Sql Server数据库;操作系统层面划分了三个逻辑分区。 数据库故障&初检: 未知原因导致Sql Server数据库文件丢失&#xff…

【tippecanoe】Linux环境tippecanoe部署

Linux环境tippecanoe部署 1.简介2.安装部署2.1相关依赖2.2 sqlite 3.tippecanoe安装 1.简介 mapbox-gl支持矢量切片 ,其中tippecanoe是mapbox官方提供的一个开源矢量切片工具。tippecanoe支持mbtiles格式的数据生成。 工具tippecanoe的使用可以再linux进行&#xf…

优雅的接口防刷处理方案

前言 本文为描述通过Interceptor以及Redis实现接口访问防刷Demo 这里会通过逐步找问题,逐步去完善的形式展示 原理 通过ip地址uri拼接用以作为访问者访问接口区分 通过在Interceptor中拦截请求,从Redis中统计用户访问接口次数从而达到接口防刷目的 …

《大师说栏目第一期》汽车以太网测试项那么多,到底该测啥呢?

#《大师说》栏目上线啦# 《大师说》栏目是怿星科技2023年推出的深度思考栏目,通过邀请内部专家,针对智能汽车行业发展、技术趋势等输出个性化的观点。每期一位大师,每位一个话题,本期由我们怿星以太网扛把子--邓伟,进行…

MetaERP系统主要干什么的,华为自研ERP的路子是否可以效仿?

近日,华为成功研发出自主可控的MetaERP系统,并完成了对旧有ERP系统的替换。该系统采用全栈自主可控技术,基于华为欧拉操作系统、GaussDB等根技术,采用云原生架构、元数据多租架构、实时智能技术等,提高业务效率&#x…

Trimble RealWorks处理点云数据(八)之点云导入houdini生成三维模型

步骤 1、las导入Trimble RealWorks 2、对点云数据预处理 可以参考这篇文章 TrimbleRealWorks点云数据预处理 我这边是做了一个新建坐标系以及0.02m的取样 3、导出pts格式 接下来的流程可以参考 https://learn.microsoft.com/zh-cn/dynamics365/mixed-reality/guides/3d-co…

5年测试老鸟总结,自动化测试的实施到落地,看这一篇足够...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

自然语言处理(NLP)在放射学报告评价中的应用:应用和技术进展

自然语言处理(NLP)在放射学报告评价中的应用:应用和技术进展 写在最前面摘要引言先进的技术BERT算法优点 Applications in Radiology 放射学应用Quality 质量将关键发现通知转诊临床医生放射科关键绩效指标和评估 个别放射科医生的表现同行学…

WRF模式的移植、运行、后处理及在多领域的应用

1、WRF模式的各个组成部分; 2、自主完成该模式的移植;3、自主完成模式运行; 4、自主完成模式后处理;5、通过多领域案例分析、实践,熟悉在多领域中的应用。 随着生态文明建设和“碳中和”战略的持续推进,我…

jmeter常用的命令行参数有哪些?常用的jmeter命令行如何编写

目录:导读 引言 一、JMete执行方式 二、JMete非GUI运行优点 三、jmeter非GUI运行参数 四、jmeter非GUI运行命令 4.1非GUI基本命令格式: 4.2非GUI并生成html报告基本命令格式 结语 引言 你是否在使用JMeter进行负载测试时感到手忙脚乱&#xff1…

【MATLAB数据处理实用案例详解(14)】——利用RBF径向基网络预测地下水位

目录 一、问题描述二、RBF径向基网络实现地下水位预测三、算法步骤3.1 定义数据样本3.2 划分训练数据与测试数据3.3 数据增强3.4 创建径向基神经网络3.5 测试 四、结果展示五、完整代码 一、问题描述 地下水系统是一个复杂的非线性、随机系统。建立微分方程模型需要大量详尽的…

C++刨析(this指针,构造,析构函数)

目录 this指针 构造函数 析构函数 this指针 在我们创建一个对象,对象去调用类中的函数的时候,有没有想过它是怎么进行修改的,回想我们以前写C语言的时候,如果我们写了一个栈,当需要操作栈中的数据时,我们需要把构造出来栈的变量的地址传过去,让函数拿到这个地址来对我们的栈…

通过Mars3d在地图上加载风力发电机车模型

首先理清需求,通过Mars3d的基础项目,在基础项目模板上添加一个风力发电机模型。 Mars3d官网的基础项目下载地址:Mars3D三维可视化平台 | 火星科技 gitee地址: git clone https://gitee.com/marsgis/mars3d-vue-project.git 下载…