在线教育网站开发方案湖南网站设计案例
2026/2/14 22:19:42 网站建设 项目流程
在线教育网站开发方案,湖南网站设计案例,网站开发 商标注册,在线制作图表1. GPIO介绍 GPIO 是 “General-Purpose Input/Output” 的缩写#xff0c;即通用输入 / 输出接口#xff0c;是嵌入式系统#xff08;如单片机、MCU#xff09;中最基础的硬件接口之一。 核心特点 通用性#xff1a;可灵活配置为 “输入” 或 “输出” 模式#xff0c…1. GPIO介绍GPIO 是 “General-Purpose Input/Output” 的缩写即通用输入 / 输出接口是嵌入式系统如单片机、MCU中最基础的硬件接口之一。核心特点通用性可灵活配置为 “输入” 或 “输出” 模式适配不同场景可编程通过寄存器或软件如 STM32CubeMX设置其工作模式、电平状态等基础功能载体是连接外部硬件如按键、LED、传感器的 “桥梁”。STM32H743IIT6 芯片是 176 脚的芯片它的 IO 口总共有 140 个IO 分组为 8 组分别是 GPIOA-GPIOH。这里 GPIOA-GPIOH16*8128个 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 和 PUPDR2 个 32 位数据寄存器IDR 和 ODR1 个 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亮灭

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询