第三讲--GPIO输入输出库函数使用以及相关例程

本文深入讲解STM32开发板命名规则,如STM32F103C8T6的含义,并补充了如何根据型号选择启动文件。接着,重点介绍了GPIO输入输出的库函数,包括GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit和GPIO_Write的使用方法,并通过实例演示了如何点亮和闪烁LED。最后提供了一段完整的LED闪烁代码。
摘要由CSDN通过智能技术生成

目录

前言

一、补充第一讲遗漏的内容

1.stm32开发板的命名规则:

2.型号分类

二.GPIO输入输出的相关库函数

1.需要首先掌握的GPIO函数

1.GPIO_SetBits()函数与GPIO_ResetBits函数:

2.GPIO_WriteBit函数与GPIO_Write函数:

2.点亮LED和LED闪烁


前言

上一讲介绍了GPIO是什么,GPIO的八种工作模式,详细介绍了GPIO初始化配置的方法,下面详细介绍GPIO输入相关库函数的用法以及用相关例程供大家参考


一、补充第一讲遗漏的内容

当建立好工程文件夹以及导入了相关库后,经过小伙伴的提问后才发现自己遗漏了一个比较重要的内容,那就是如何根据开发板型号选择user中的启动文件,下面给大家详细介绍:

1.stm32开发板的命名规则:

想知道如何选择正确的启动文件,首先要清楚stm32系列开发板的命名规则,以我使用的stm32f103c8t6为例,

将其分为 STM32 F 103 C 8 T 6

Stm32即为32单片机,

F是产品类型,103代表产品子系列,101为基本型,102为USB基本型,103为增强型,105或107为互联型。

C代表引脚数,T=36脚,C=48脚,R=64脚,V=100脚,Z=144脚。

8代表FLASH大小(可以理解为闪存)6=32K,8=64K,B=128K,C=256K,D=384K,E=512K

T代表封装 H=BGA T=LQFP,U=VFQFPN

6代表工作温度范围  6=工业级,-40~+85℃         7=工业级,-40~+105℃   

2.型号分类

根据他们的型号进行分类

   型号Flash容量缩写
STM32F10016-32KLD_VL
STM32F10064-128KMD_VL
STM32F100256-512KHD_VL
STM32F101/102/10316-32KLD
STM32F101/102/10364-128KMD
STM32F101/102/103256-512KHD
STM32F101/102/103>512KXL
STM32F105/107--CL

所以,咱们使用的F103C8T6是不是就是选择MD,s的启动文件呢:?

显然是的!

二.GPIO输入输出的相关库函数

首先跟大家说一下GPIO输入输出的相关库函数都在库的GPIO.h文件中,下拉到最后可以找到。

1.需要首先掌握的GPIO函数


void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

这些是初学者最常用的GPIO函数,下面我们逐个介绍:

1.GPIO_SetBits()函数与GPIO_ResetBits函数:

用来配置GPIO口为高电平,LED中的灭灯就可以使用该函数,其中函数的参数与GPIO初始化函数的参数相同,再次举例说明一下参数怎么选,首先看函数定义中关于参数的注释。

  * @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bits to be written.

举例说明,假设我们把外设接在了PA0口,那么GPIOx这个参数就使用GPIOA,而第二个参数选择GPIO_Pin_0,所以该函数的参数就为(GPIOA,GPIO_Pin_0)

下边的GPIO_ResetBits函数也是这种选参方法,LED中的灭灯就可以使用该函数,而该函数用来配置GPIO口为低电平。

2.GPIO_WriteBit函数与GPIO_Write函数:

GPIO_WriteBit该函数有三个参数,与上边函数不同的是,该函数需要三个参数,该参数也是实现GPIO口的高低电平设置,下面举例说明:

先看函数参数注释:

 * @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bit to be written.
  *   This parameter can be one of GPIO_Pin_x where x can be (0..15).
  * @param  BitVal: specifies the value to be written to the selected bit.
  *   This parameter can be one of the BitAction enum values:
  *     @arg Bit_RESET: to clear the port pin
  *     @arg Bit_SET: to set the port pin

我们还是以A0口为例:那么第一和第二个参数与上边介绍过的函数相同,分别为GPIOA和GPIO_PIN_0,重点看第三个参数,如果要将A0口置为高电平,那么也就是注释中所说的设置端口信号(to set the port pin),参数选择Bit_SET,反之,即为清除端口信号(to set the port pin),参数就是Bit_RESET。

当然了,如果你就是特别想要在第三个参数用1和0表示高低电平,也可以,但是需要做一个强制转换,转换为BitAction,第三个参数就为((BitAction)1)或((BitAction)0)。但是不建议使用。

而另一个函数GPIO_Write,可以对所以端口进行操作,这个我们下一篇单独详细介绍。

2.点亮LED和LED闪烁

学完了上边的几个函数,就可以进行点亮LED操作了,我们直接说LED闪烁,里边包含了点LED的操作。

首先把GPIO的初始化完成,上节课已经讲过了,这里我们直接用,不会的同学大家可以去我的上一篇博客看看。然后用GPIO_SetBits()灭灯,GPIO_ResetBits()点灯,加入延时就是闪烁了。

附代码:

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
    

int main()
{
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使用RCC开启GPIO时钟
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	//到上边为止,GPIO初始化完成
	while(1)
	{
			GPIO_ResetBits(GPIOA,GPIO_Pin_0);
			GPIO_SetBits(GPIOA,GPIO_Pin_0);
			Delay_ms(500);
			GPIO_WriteBit(GPIOA,GPIO_Pin_0, Bit_RESET);
//GPIO_WriteBit(GPIOA,GPIO_Pin_0, (BitAction)0);
			Delay_ms(500);
			GPIO_WriteBit(GPIOA,GPIO_Pin_0, Bit_SET);	//GPIO_WriteBit(GPIOA,GPIO_Pin_0, (BitAction)1);
			Delay_ms(500);
	}

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值