0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

以按键驱动为例来实现输入模式配置方法

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-05-31 11:13 次阅读

  1.STM32中GPIO口模式

每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL, GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。根据数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置成多种模式。

─ 输入浮空
─ 输入上拉
─ 输入下拉
模拟输入
─ 开漏输出
─ 推挽式输出
─ 推挽式复用功能
─ 开漏复用功能

每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问 (不允许半字或字节访问 )。 GPIOx_BSRR和 GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。

本示例主要讲解IO口输入模式的应用,以按键驱动为例来实现输入模式配置方法。本次实验所用开发板有3个按键,其中一个为复位按键,另外两个则可用户自行驱动。我们采用板载的2个按键来实现对LED开关控制

2.硬件接口

  SW2为复位按键,已直接接到芯片复位引脚上,SW3接在PB0上、SW4接在PB1上。按键按下均为低电平。

在这里插入图片描述

3.软件设计

1.打开STM32CubmMX代码生成软件,将PB0、PB1配置为输入模式。
2.在选定为输入模式后,STM32输入模式分为两种:浮空输入、上拉/下拉输入。
浮空输入:配置为浮空输入模式,初始化成功后引脚电平状态处于中间态,既不为高也不为低。
上拉/下拉输入:配置为浮空输入模式,初始化成功后引脚电平状态可以选择是高电平或者低电平。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

  因为按键按下为低电平,因此要想检测到按键状态变化,初始化时就得设置为与按下相反的电平,所用我们这里选择带上拉的输入模式(选择浮空输入也可,一般建议使用上拉输入模式)。

4.生成配置代码

  使用STM32Cubemx生成代码时,所有的GPIO初始化均会放gpio.c中。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center
  1. 在当前工程的Core目录下新建SYSTEM文件夹保存用户自定义驱动文件。
在这里插入图片描述

2.创建一个key.c和key.h文件,在SYSTEM目录中创建一个KEY文件夹保存该文件

在这里插入图片描述

3.添加头文件路径,编写key.h文件

在这里插入图片描述watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

4.编写key.c文件,编写按键检测函数

u8 KEY_GetVal(void)
{
	u8 static stat=0;
	if((!KEY1 || !KEY2) && !stat)
	{
		stat=1;
		HAL_Delay(30);
		if(!KEY1)return 1;
		else if(!KEY2)return 2;
		else return 0;
	}
	else
	{
		if(KEY1 && KEY2)stat=0;
	}
	return 0;
}

5.实现按键控制LED开关

在这里插入图片描述

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2264

    文章

    10852

    浏览量

    354100
  • GPIO
    +关注

    关注

    16

    文章

    1186

    浏览量

    51795
  • 按键驱动
    +关注

    关注

    0

    文章

    11

    浏览量

    7123
收藏 人收藏

    评论

    相关推荐

    DshanMCU-R128s2 ADC按键配置方法

    FreeRTOS平台上使用的按键ADC-KEY,采用的ADC模块GPADC。 按键功能驱动实现
    的头像 发表于 12-22 19:11 2208次阅读
    DshanMCU-R128s2 ADC<b class='flag-5'>按键</b><b class='flag-5'>配置</b><b class='flag-5'>方法</b>

    Linux下如何使用中断的方式驱动按键

    Linux下的按键输入驱动开发模板一文中介绍了基本的按键输入捕获流程,这里将进一步介绍如何使用中断的方式
    发表于 07-29 08:59 946次阅读

    STM32F407 GPIO口输入配置配置步骤

    介绍STM32F407新建寄存器工程流程,介绍输入模式配置方式,按键
    的头像 发表于 07-06 14:28 2041次阅读
    STM32F407 GPIO口<b class='flag-5'>输入</b><b class='flag-5'>配置</b><b class='flag-5'>配置</b>步骤

    L298N介绍电机驱动模块的使用方法

    电机驱动模块在电子制作中会经常使用到,下面L298N型号的模块介绍其使用方法。 模块引脚说明如下:值得注意的是,它已经内置5V供电,所
    发表于 12-30 07:47

    学习配置按键模块

    ,PA0分别检测B1-B4按键的状态2.Cubemx实现IO的配置注:RCC的配置是不可少的哦,不记得的可以参看上一节此处也初始化了LED作为测试显示。IO
    发表于 01-11 08:03

    怎样通过按键处理led演示IO输入模式配置

    怎样通过按键处理led演示IO输入模式配置呢?有哪些配置步骤?
    发表于 01-27 06:08

    单片机的按键配置输入模式获取控制信号

    关于STM32学习分享第二章 按键输入控制文章目录前言二、代码1.key.c2.key.h3.main.c总结前言开始!开始!单片机的按键配置
    发表于 02-24 06:06

    SPI驱动展示如何使用ENV工具对BSP进行配置

    、SDIO、ADC 等,但是 BSP 工程默认没有开启这些外设驱动。RT-Thread 提供了 ENV 工具开启或关闭 BSP 的外设驱动。本文 RA6M4-CPK 开发板上开启
    发表于 07-15 10:55

    全志R128外设模块配置——ADC按键配置方法

    ADC 按键配置方法 FreeRTOS平台上使用的按键ADC-KEY,采用的ADC模块GPA
    发表于 10-20 11:04

    3、GIPO输入按键配置

    本节通过按键处理led演示IO输入模式配置1、根据原理图按键找到对应的引脚2、打开cubem
    发表于 12-03 09:06 9次下载
    3、GIPO<b class='flag-5'>输入</b>(<b class='flag-5'>按键</b><b class='flag-5'>配置</b>)

    STM32 按键输入实验

    加粗样式一.实验目的1.熟悉使用STM32F4XX开发板2.掌握其GPIO的使用方法3.掌握按键实现方法二.实现步骤(1)使能
    发表于 12-27 18:53 4次下载
    STM32 <b class='flag-5'>按键</b><b class='flag-5'>输入</b>实验

    STM32笔记之按键KEY输入

    关于STM32学习分享第二章 按键输入控制文章目录前言二、代码1.key.c2.key.h3.main.c总结前言开始!开始!单片机的按键配置
    发表于 12-31 19:49 7次下载
    STM32笔记之<b class='flag-5'>按键</b>KEY<b class='flag-5'>输入</b>

    AMetal适配:TIM展示如何开发通用驱动外设代码

    基于定时器、RTC、WDT本质上均是计数器的共性,本次将这三种通用外设统一TIM。TIM展示如何开发通用
    的头像 发表于 05-12 17:08 1785次阅读
    AMetal适配:<b class='flag-5'>以</b>TIM<b class='flag-5'>为</b><b class='flag-5'>例</b><b class='flag-5'>来</b>展示如何开发通用<b class='flag-5'>驱动</b>外设代码

    按键驱动的实验

    按键驱动实验与LED以及Beep在整体使用逻辑上一样,只是按键输入模式
    的头像 发表于 03-02 16:25 704次阅读
    <b class='flag-5'>按键</b><b class='flag-5'>驱动</b>的实验

    STM32单片机的GPIO输入、输出模式配置方法

    STM32 单片机是一款高性能、低功耗的 32 位微控制器,具有强大的计算能力、灵活的外设模块和实现微控制器应用所需的社区支持。在单片机应用中,GPIO 输入输出模式是必不可少的硬件接口之一。本文将介绍 STM32 单片机的 G
    发表于 08-15 18:23 7877次阅读