STM32学习笔记(四):简易的GPIO配置--按键控制

1、前言

前面配置了灯光后大家应该都差不多知道GPIO参数的配置了,在本学习笔记中,我们学习–按键控制;这个是在灯光的基础上把输出改为输入,具体的配置还要看你的原理图,如果是上拉的话就上拉,没有就浮空。

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

其中这三个参数是什么意思呢?

第一个是表示第几个引脚;

第二个表示引脚速度需要配置多少;如:
在这里插入图片描述
引脚速度需要多少可根据自己的需求配置。在本例子不需要到。
第三个表示引脚的模式是什么;如:
在这里插入图片描述
引脚模式是什么可根据自己的需求配置。在本例子中为上拉输入
知道了这些参数的意思后就我们就好开始配置了。

4、GPIO初始化程序

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

void Led_Init(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;                //定义一个需要配置的GPIO引脚结构体变量
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//在使用那个GPIO引脚的前提下需要开启相关的时钟,这个很重要
   GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14|GPIO_Pin_15;  //按键连接单片机的引脚分别为PC14-15。
   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;      //引脚模式配置为上拉输入模式。
   GPIO_Init(GPIOC, &GPIO_InitStructure);               //配置好参数之后就开始初始化GPIO。
}

如上图为按键的初始化程序。

5、GPIO电平的控制

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

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

#define KEY1  (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_15))
#define KEY2  (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_14))

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

6、主函数

int main()
{
        Delay_Init(72);
        Led_Init();
        Key_Init();
        
  while(1)
  {
                if(KEY1)
                {
                    delay_ms(10);//按键消抖
                    LED1_ON;
                    LED2_OFF;
                }
                else if(KEY2)
                {
                    delay_ms(10);//按键消抖
                    LED1_OFF;
                    LED2_ON;
                }
  }
}
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值