STM32基础之库函数GPIO的使用(点亮小灯)

目录

STM32介绍:

GPIO基本结构

GPIO的模式:

 GPIO的模式图形理解:

GPIO的各种配置函数

 GPIO的各个模式,都知道了,直接上程序和现象


STM32介绍:

        STM32单片机作为一款十六为的单片机,它的功能是毋庸置疑的,寄存器不是一般的多,但是官方给的库函数对开发者来说,无疑是很好的一种使用手段。

        在入门哪一款单片机,都是先操作它的GPIO,来达到控制的目的。今天我们就来了解STM32的GPIO的使用,利用库函数把LED灯点亮。GPIO的库函数有很多,我在这里尽量把所有的,库函数的用法给解释出来;

GPIO基本结构

(我参考的是普中科技的ppt,如有侵权,请及时联系我,会立即处理)

在这之前,先给大家看一下STM32的GPIO有哪些功能(模式)

GPIO一共有八种模式:输入四种,输出四种;

GPIO的模式:

输入模式:

  •         输入浮空: GPIO_Mode_IN_FLOATING
  •         输入上拉: GPIO_Mode_IPU
  •         输入下拉 :GPIO_Mode_IPD
  •         模拟输入 :GPIO_Mode_AIN

输出模式 

  •         开漏输出 GPIO_Mode_Out_OD
  •         推挽输出 GPIO_Mode_Out_PP
  •         复用功能推挽 GPIO_Mode_AF_PP
  •         复用功能开漏 GPIO_Mode_AF_OD

 GPIO的模式图形理解:

1、输入浮空模式 

2、输入上拉模式  

                         

 

3、输入下拉模式

4、模拟输入模式

        

5、开漏输出模式

6、开漏复用输出模式

         

7、推挽输出模式

8、 推挽复用输出模式

        

         因为我用的普中科技的STM32单片机,讲师用的这个,感觉总结的很好,就拿来分享一下如果涉及侵权行为,请及时联系我,我会及时做出处理。

GPIO的各种配置函数

 下面是STM32F103VET6的库函数:

STM32F103VET6是一款高储存,管脚较多的一款,管脚数144个;

GPIO有96个表示方法:

        GPIOx:GPIO的分类,分成六类 ,x:A~F;

        GPIO_Pin_n:每类GPIO的个数,n:0~15;  

库函数有很多,有很多用不到,下面就解释了一部分,都是最常用的

函数名作用参数1参数2
GPIO_Init初始化GPIO,设置GPIO的模式,速度,引脚数此引脚挂接的GPIOx

对应的引脚(0~15)

GPIO_ReadInputDataBit读取一位GPIO的输入数据此引脚挂接的GPIOx对应的引脚(0~15)
GPIO_ReadInputData读取GPIOx的输入数据GPIOx的选择(x表示A~F)
GPIO_ReadOutputDataBit读取一位GPIO的输出数据此引脚挂接的GPIOx对应的引脚(0~15)
GPIO_ReadOutputData读取GPIOx的输出数据GPIOx的选择(x表示A~F)
GPIO_SetBits使GPIO设置为高电平,课一起设置多,也可以设置一个GPIOx对应的引脚(0~15)
GPIO_ResetBits使GPIO设置为高电平,课一起设置多,也可以设置一个GPIOx对应的引脚(0~15)
GPIO_WriteBit设置GPIO的一个管脚GPIOx

参数:2:选择哪个管脚

参数3:选择高/低电平

GPIO_Write设置GPIOx全部管脚GPIOx选择高/低电平


 GPIO的各个模式,都知道了,直接上程序和现象

  程序里面也有相对应的注释

1、设置GPIOC,GPIO_Pin_0管脚为低电平

#include "stm32f10x.h"       

void Led_Init(void)//LED引脚GPIO初始化
{
	GPIO_InitTypeDef  GPIO_InitStruct;//定义一个结构体变量,来初始化GPIO的各个参数
	RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC,ENABLE);//因为led在GPIOC上,需要开启相对应的时钟信号
	
	GPIO_InitStruct.GPIO_Mode =GPIO_Mode_Out_PP;//定义GPIO的模式
	GPIO_InitStruct.GPIO_Pin =GPIO_Pin_0 ;//定义GPIO的哪个管脚(0~15)All表示全部
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz ;//定义GPIO的时钟速度
	GPIO_Init(GPIOC,&GPIO_InitStruct);//这个结构体以地址形式传出去,因为是个指针变量
}

int main()
{
	Led_Init();
	while(1)
	{
		GPIO_ResetBits (GPIOC,GPIO_Pin_0);
	}
}

 现象

2、设置GPIOC,GPIO_Pin_All全部的管脚为低电平

#include "stm32f10x.h"       

void Led_Init(void)//LED引脚GPIO初始化
{
	GPIO_InitTypeDef  GPIO_InitStruct;//定义一个结构体变量,来初始化GPIO的各个参数
	RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC,ENABLE);//因为led在GPIOC上,需要开启相对应的时钟信号
	
	GPIO_InitStruct.GPIO_Mode =GPIO_Mode_Out_PP;//定义GPIO的模式
	GPIO_InitStruct.GPIO_Pin =GPIO_Pin_All ;//定义GPIO的哪个管脚(0~15)All表示全部
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz ;//定义GPIO的时钟速度
	GPIO_Init(GPIOC,&GPIO_InitStruct);//这个结构体以地址形式传出去,因为是个指针变量
}

int main()
{
	Led_Init();
	while(1)
	{
		GPIO_ResetBits (GPIOC,GPIO_Pin_All);
	}
}

 现象

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫咪死了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值