news 2026/6/9 17:22:31

1.GPIO

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1.GPIO

1. GPIO介绍

GPIO 是 “General-Purpose Input/Output” 的缩写,即通用输入 / 输出接口,是嵌入式系统(如单片机、MCU)中最基础的硬件接口之一。

核心特点

  1. 通用性:可灵活配置为 “输入” 或 “输出” 模式,适配不同场景;
  2. 可编程:通过寄存器或软件(如 STM32CubeMX)设置其工作模式、电平状态等;
  3. 基础功能载体:是连接外部硬件(如按键、LED、传感器)的 “桥梁”。

STM32H743IIT6 芯片是 176 脚的芯片,它的 IO 口总共有 140 个,IO 分组为 8 组,分别是 GPIOA-GPIOH。这里 GPIOA-GPIOH,16*8=128个 IO口。

2.STM32H743 GPIO功能

GPIO有八种工作模式,分别是:
1、输入浮空
2、输入上拉
3、输入下拉
4、模拟
5、开漏输出
6、推挽输出
7、开漏式复用功能
8、推挽式复用功能

3.GPIO基本结构

见《STM32H7xx参考手册》

4.寄存器

单片机的外设(GPIO、UART、ADC、定时器等)本质是由一组寄存器(控制寄存器、数据寄存器、状态寄存器等)定义的:

  • 比如控制 GPIO 输出高电平,最终是向ODR寄存器的对应位写入 1;
  • 配置 UART 波特率,最终是修改BRR寄存器的分频值;
  • 读取 ADC 采样值,最终是读取DR寄存器的数值。

结论:无论上层如何封装,外设的硬件行为最终都由寄存器的数值决定,这是单片机硬件的核心逻辑

所以,熟悉任何一个外设,都要熟悉其寄存器。

STM32H7每组(这里是 A~H)通用 GPIO 口有 10个 32 位寄存器控制,包括 :
4 个 32 位配置寄存器(MODER、OTYPER、OSPEEDR 和 PUPDR)
2 个 32 位数据寄存器(IDR 和 ODR)
1 个 32 位置位/复位寄存器 (BSRR)
1 个 32 位锁定寄存器 (LCKR)
2 个 32 位复用功能选择寄存器(AFRH 和 AFRL)

具体每个寄存器什么含义,见《STM32H7xx参考手册》

5.GPIO驱动LED灯亮灭

原理图:

代码:

这里为了调试方便,使用rtthread基本工程。

/* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2019-03-05 whj4674672 first version */ #include <rtthread.h> #include <rtdevice.h> #include <board.h> #define LED0_GPIO_PORT GPIOB #define LED0_GPIO_PIN GPIO_PIN_1 #define LED0_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0) #define LED1_GPIO_PORT GPIOB #define LED1_GPIO_PIN GPIO_PIN_0 #define LED1_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0) /* LED端口定义 */ #define LED0(x) do{ x ? \ HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_SET) : \ HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_RESET); \ }while(0) /* LED0 = RED */ #define LED1(x) do{ x ? \ HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_SET) : \ HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_GPIO_PIN, GPIO_PIN_RESET); \ }while(0) /* LED1 = GREEN */ /* LED取反定义 */ #define LED0_TOGGLE() do{ HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0_GPIO_PIN); }while(0) /* LED0 = !LED0 */ #define LED1_TOGGLE() do{ HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_GPIO_PIN); }while(0) /* LED1 = !LED1 */ /** * @brief 初始化LED相关IO口, 并使能时钟 * @param 无 * @retval 无 */ void led_gpio_init(void) { GPIO_InitTypeDef gpio_init_struct; LED0_GPIO_CLK_ENABLE(); /* LED0时钟使能 */ LED1_GPIO_CLK_ENABLE(); /* LED1时钟使能 */ gpio_init_struct.Pin = LED0_GPIO_PIN; /* LED0引脚 */ gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /* 推挽输出 */ gpio_init_struct.Pull = GPIO_PULLUP; /* 上拉 */ gpio_init_struct.Speed = GPIO_SPEED_FREQ_MEDIUM; /* 中速 */ HAL_GPIO_Init(LED0_GPIO_PORT, &gpio_init_struct); /* 初始化LED0引脚 */ gpio_init_struct.Pin = LED1_GPIO_PIN; /* LED1引脚 */ HAL_GPIO_Init(LED1_GPIO_PORT, &gpio_init_struct); /* 初始化LED1引脚 */ LED0(1); /* 关闭 LED0 */ LED1(1); /* 关闭 LED1 */ } int main(void) { led_gpio_init(); while(1) { LED0(0); /* LED0(RED) 亮 */ LED1(1); /* LED1(GREEN) 灭 */ rt_thread_mdelay(500); LED0(1); /* LED0(RED) 灭 */ LED1(0); /* LED1(GREEN) 亮 */ rt_thread_mdelay(500); } }

6.仿真

7.现象

led亮灭

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 21:19:59

基于多维度分析的海外网红营销精准选择与效果预测

在全球化营销快速演进的环境下&#xff0c;海外网红营销已从“凭感觉选人”走向“用数据决策”。尤其在品牌竞争加剧、内容形式不断演化的当下&#xff0c;如何精准筛选最适合品牌的海外网红&#xff0c;并在合作前对传播效果进行可预测性评估&#xff0c;已成为品牌能否提高投…

作者头像 李华
网站建设 2026/6/10 8:27:47

CoreProtect终极安装配置指南:快速搭建Minecraft服务器监控系统

快速上手篇&#xff1a;零基础安装指南 【免费下载链接】CoreProtect CoreProtect is a blazing fast data logging and anti-griefing tool for Minecraft servers. 项目地址: https://gitcode.com/gh_mirrors/co/CoreProtect 环境准备与前置检查 在开始安装CoreProte…

作者头像 李华
网站建设 2026/6/8 20:17:53

中文NLP语料库终极指南:五大核心数据集完整解析

你是否在为中文NLP项目寻找高质量语料而苦恼&#xff1f;面对海量数据却不知如何筛选&#xff1f;本文为你深度解析nlp_chinese_corpus项目中的五大核心数据集&#xff0c;带你轻松掌握千万级中文语料的应用之道。 【免费下载链接】nlp_chinese_corpus 大规模中文自然语言处理语…

作者头像 李华
网站建设 2026/6/10 9:40:39

运维工程师技术之nfs共享文件系统

NFS&#xff08;Network File System&#xff0c;网络文件系统&#xff09;的共享配置项&#xff0c;用于定义服务器上的目录如何被客户端访问。我会逐部分拆解这个配置的含义&#xff0c;让你清晰理解每个参数的作用。 一、配置项整体结构 /shared/data 192.168.42.0/24(rw,sy…

作者头像 李华
网站建设 2026/6/6 4:46:29

计算机组成原理头歌logisim——8位可控加减法器/原码一位乘法器设计/算术逻辑运算单元ALU/汉字字库存储芯片扩展实验/寄存器文件设计/微程序地址转移逻辑设计

8位可控加减法器原码一位乘法器设计算术逻辑运算单元ALU这个需要前置设备4位先行进位741824位快速加法器16位快速加法器32位快速加法器算术逻辑运算单元ALU汉字字库存储芯片扩展实验寄存器文件设计微程序地址转移逻辑设计

作者头像 李华
网站建设 2026/6/9 16:18:40

Chip蓝牙贴片3.2x1.6天线

KH-3216-A35 Chip蓝牙贴片3.2x1.6天线 5.19dBi 金航标微波多层陶瓷天线LA系列产品设计用于WLAN、WiFi、蓝牙、PHS&#xff0c;手机多频天线, FM等小体积SMD片式设计。品牌名称 kinghelm(金航标) 商品型号 KH-3216-A35 商品编号 C504002 商品封装 1206 包装方式 编带 商品…

作者头像 李华