STM32学习笔记(三):简易的GPIO配置--灯光控制

1、前言

前面我们已经创建好工程了,下面开始单片机最经典的入门例程—《点灯大法》俗称灯光控制师。
但是大家也不要小看LED灯,这个如果深入的话也是非常高深的,会涉及到背光、RGB等……
但是今天我们难的不讲,就从最简单的入手,所以。
下面我们直接进入正题。

2、添加相关的标准库

在用标准库配置GPIO的时候,我们需要手动添加这个GPIO的库函数。
如下图的步骤所示添加,添加如第五步里面的几个库函数,如果看这个图还看不懂话请私聊我或者在下方的评论区评论留言。
在这里插入图片描述

3、GPIO配置参数的简单说明

在添加了相关的库函数之后我们可以去哪个stm32f10x_gpio.c的头文件stm32f10x_gpio.h中可以看到在STM32F103中的GPIO配置需要配置那些参数。
如图:
在这里插入图片描述
上图展示了需要配置这三个参数:
uint16_t GPIO_Pin
GPIOSpeed_TypeDef GPIO_Speed
GPIOMode_TypeDef GPIO_Mode
其中这三个参数是什么意思呢?
第一个是表示第几个引脚;
第二个表示引脚速度需要配置多少;如:
在这里插入图片描述
引脚速度需要多少可根据自己的需求配置。在本例子中为50Mhz

第三个表示引脚的模式是什么;如:
在这里插入图片描述
引脚模式是什么可根据自己的需求配置。在本例子中为推挽输出

知道了这些参数的意思后就我们就好开始配置了。

4、GPIO初始化程序

在上面介绍了GPIO配置的参数后我们可以开始编写GPIO初始化程序了。

void Led_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;                //定义一个需要配置的GPIO引脚结构体变量
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//在使用那个GPIO引脚的前提下需要开启相关的时钟,这个很重要
  	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;  //LED灯的正极和单片机的引脚分别为PA0-1。
  	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;      //引脚模式配置为推挽输出模式。
  	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;     //引脚的输出速度为50M。
  	GPIO_Init(GPIOA,&GPIO_InitStructure);               //配置好参数之后就开始初始化GPIO。
}

如上图为点亮LED的简单初始化。如果单单初始化你是不能控制LED的亮灭的。我们还需要编写控制引脚电平状态的函数。

5、GPIO电平的控制

如果想要控制GPIO的电平的话,我们还需要使用到相关的库函数,这个也是在stm32f10x_gpio.c中,如果想要查找的,去头文件比较方便。

下面我就不介绍了,反正就在这两个文件里面,下面我直接给出程序和注释。

#define LED1_ON  GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET)   //点亮LED1
#define LED1_OFF GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET)     //熄灭LED1
#define LED2_ON  GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_RESET)   //点亮LED2
#define LED2_OFF GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_SET)     //熄灭LED2

这个实在头文件里面定义的,使用了宏定义做个简单替代,可以方便调用和直观明了。

6、主函数

int main()
{
        Delay_Init(72);
        Led_Init();
        while(1)
        {
	        LED1_ON;
                delay_ms(1000);
                LED1_OFF;
                LED2_ON;
                delay_ms(1000);
                LED2_OFF;
                delay_ms(1000);
         }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值