【stm32】点灯-GPIO的初步了解-1

本文介绍了如何使用STM32单片机通过GPIO接口点亮LED灯。首先,文章简述了GPIO的基本概念和STM32的IO口模式。接着,详细讲述了硬件设计,包括所需的硬件条件和电路图。在软件设计部分,讨论了GPIO初始化、库函数的使用,如GPIO_Init、GPIO_SetBits和GPIO_ResetBits,并展示了如何在主函数中实现LED的点灯和循环点亮。实验结果显示,LED成功实现了交替闪烁的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现的功能

  1. 点亮LED灯
  2. 使得开发板上的两个LED交替闪烁

STM32IO口简介

要使得LED被点亮,根据LED的性质来说,肯定是要通过控制高低电平的输出,进而控制LED的亮灭。而要控制电平就是要控制IO的输出电平,对此我们需要对IO口进行设置。GPIO中有很多中模式,但对于其他模式,我们需要用的时候再去了解,对此我们目前只需要实现点灯这个功能就好了,也就是目前掌握控制GPIO高低电平输出就可以了。
有关GPIO的库函数在‘stm32f10x_gpio.h,stm32f10x_gpio.c’之中。

硬件设计

我们先看一下硬件需要做些什么,在工程中也是如此,我们想好了要什么功能之后我们就要对硬件进行设计,要考虑清楚实现功能的硬件条件

硬件条件

  1. 开发板上的两个LED灯
  2. stm32的两个IO口

电路图

在这里插入图片描述

这个开发板上直接将PD2与LED1连接,PA8与LED0进行连接。
根据这个二极管的电平我们可以知道,我们要输出低电平就能够使得LED点亮,对此我们接下来就是对GPIO的软件设置进行讲解。

软件设计

了解库函数

我们可以打开‘stm32f10x_gpio.h,stm32f10x_gpio.c’中去进行查看。在这个.c文件中是GPIO中的一些对于寄存器编程的封装函数我们并不需要全部掌握。最好的方法就是直接查看.h文件中的关于函数的声明,去阅读其中的函数,在这里如果我们英文水平可以看懂这些函数的意义那么对于我们日后的学习和工作来说会简单许多,其实就像是直接阅读工具的使用说明书一样,我们需要用什么就可以去进行使用。对应的函数如下,
在这里插入图片描述

对于stm32来讲,使用任何一个功能都要对其中的内部功能进行初始化,即激活该模块,比如我们现在要使用IO口我们就需要对GPIO进行一个初始化。
这里我们找到其中函数,在351行中有一个函数。

GPIO_Init

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

我们要对这个函数进行初始化设置,其中这个函数中一些参量我们需要了解其中含义。
GPIO_TypeDef* GPIOx ——其中GPIO_TypeDef* 是一个结构体其中具体内容我们不需要进行掌握,是一些GPIO寄存器的封装,而我们只需要关注GPIOx这个的含义是我们对哪一个GPIO进行配置,其中的X我们进行设置,在这里我们可以设置为“A or B or C or D”具体的使用我们后面用到的时候再进行讲述。
GPIO_InitTypeDef* GPIO_InitStruct——其中GPIO_InitTypeDef*是我们需要重点关注的,它是对于我们想要功能的结构体设置(设置如下代码),而GPIO_InitStruct是我们自己定义的一个结构体。

typedef struct
{
   
  uint16_t GPIO_Pin;             /*!< Specifies the GPIO pins to be configured.
                                      This parameter can be any value of @ref GPIO_pins_define “那个引脚”*/

  GPIOSpeed_TypeDef GPIO_Speed;  /*!< Specifies the speed for the selected pins.
                                      This parameter can be a value of @ref GPIOSpeed_TypeDef “GPIO的速度是多少” */

  GPIOMode_TypeDef GPIO_Mode
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值