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

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

3天内不再提示

STM32F407 GPIO口输入配置配置步骤

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2023-07-06 14:28 次阅读

介绍STM32F407新建寄存器工程流程,介绍输入模式的配置方式,以按键为例完成按键输入检测

【1】F407建工程所需依赖文件

img

img

img

img

img

img

【2】新建工程

img

img

img

img

img

img

img

img

img

img

img

【3】分析KEY按键硬件原理图

img

img

img

【4】编写KEY按键驱动代码

查看数据手册:

img

img

key.c文件代码如下:

#include "key.h"
 /*
 函数功能:按键初始化配置
 硬件连接:
 KEY0 --- >PE4  按下为低电平
 KEY1 --- >PE3  按下为低电平
 KEY2 --- >PE2  按下为低电平
 KEY_UP-- >PA0  按下为高电平
 */
 void KEY_Init(void)
 {
 /*1. 开时钟*/
   RCC- >AHB1ENR|=1< < 0;//使能PORTA时钟
 RCC- >AHB1ENR|=1< < 4;//使能PORTE时钟
 
   /*2. 配置GPIO口模式*/
   GPIOE- >MODER&=~(0x3< < 2*2); //清除模式
 GPIOE- >MODER|=0x0< < 2*2;    //配置输入模式
 
 GPIOE- >MODER&=~(0x3< < 3*2); //清除模式
 GPIOE- >MODER|=0x0< < 3*2;    //配置输入模式
 
 GPIOE- >MODER&=~(0x3< < 4*2); //清除模式
 GPIOE- >MODER|=0x0< < 4*2;    //配置输入模式
 
 GPIOA- >MODER&=~(0x3< < 0*2); //清除模式
 GPIOA- >MODER|=0x0< < 0*2;    //配置输入模式
 
 /*3. 配置GPIO口上下拉模式*/
 GPIOE- >PUPDR&=~(0x3< < 2*2); //清除之前配置
 GPIOE- >PUPDR|=0x1< < 2*2;    //配置上拉
 
 GPIOE- >PUPDR&=~(0x3< < 3*2); //清除之前配置
 GPIOE- >PUPDR|=0x1< < 3*2;    //配置上拉
 
 GPIOE- >PUPDR&=~(0x3< < 4*2); //清除之前配置
 GPIOE- >PUPDR|=0x1< < 4*2;    //配置上拉
 
 GPIOA- >PUPDR&=~(0x3< < 0*2); //清除之前配置
 GPIOA- >PUPDR|=0x2< < 0*2;    //配置下拉
 }
 ​
 ​
 /*
 函数功能:扫描按键
 函数参数:扫描的模式。1表示连续检测、0只能检测单个按键
 返 回 值:按下的按键值1、2、3、4
           返回0表示按键没有按下
 */
 u8 ScanKeyVal(u8 mode)
 {
 static u8 stat=0; //保存按键按下的状态
 if(mode)stat=0;   //手动清除按键按下标志
 if((KEY_UP||KEY0==0||KEY1==0||KEY2==0)&&stat==0)
 {
 stat=1;      //标记按键已经按下了
 DelayMs(20); //延时消抖
 if(KEY_UP) return 4;
 if(KEY0==0)return 1;
 if(KEY1==0)return 2;
 if(KEY2==0)return 3;
 }
 else
 {
   if(KEY_UP==0&&KEY0&&KEY1&&KEY2)stat=0; //清除按键按下标志
 }
 return 0;
 }
 ​

key.h代码如下

#ifndef _KEY_H
 #define _KEY_H
 #include "stm32f4xx.h"
 #include "delay.h"
 void KEY_Init(void);
 u8 ScanKeyVal(u8 mode);
 #define KEY0  (!!(GPIOE- >IDR&1< < 4))
 #define KEY1  (!!(GPIOE- >IDR&1< < 3))
 #define KEY2  (!!(GPIOE- >IDR&1< < 2))
 #define KEY_UP (!!(GPIOA- >IDR&1< < 0))
 #endif

Main.c代码如下

#include "stm32f4xx.h" // Device header
 #include "led.h"
 #include "delay.h"
 #include "key.h"int main(void)
 {
 u8 key,i;
 LED_Init();
 KEY_Init();
 while(1)
 {
  key=ScanKeyVal(0);
  if(key)
  {
   i=!i;
 LED0(i);
   LED1(i);
 BEEP(i);
  }
 }
 }
 ​

【5】编译代码 配置下载

img

img

审核编辑:汤梓红

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

    关注

    146

    文章

    16019

    浏览量

    343649
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117741
  • 按键
    +关注

    关注

    4

    文章

    220

    浏览量

    57340
  • GPIO
    +关注

    关注

    16

    文章

    1135

    浏览量

    50578
  • STM32F407
    +关注

    关注

    15

    文章

    187

    浏览量

    28977
收藏 人收藏

    评论

    相关推荐

    STM32F407 串口配置步骤

    介绍STM32F407串口配置步骤,完成串口的数据发送与接收、实现中断接收,支持printf重定向。
    的头像 发表于 07-06 14:29 1888次阅读
    <b class='flag-5'>STM32F407</b> 串口<b class='flag-5'>配置</b><b class='flag-5'>步骤</b>

    STM32F407 位带配置步骤

    介绍STM32F407位带操作方法,设置寄存器的偏移量,实现按GPIO口指定位进行读写操作,方便编程。
    的头像 发表于 07-06 14:30 701次阅读
    <b class='flag-5'>STM32F407</b> 位带<b class='flag-5'>配置</b><b class='flag-5'>步骤</b>

    STM32F407 外部中断配置步骤

    介绍STM32F407外部中断配置步骤,以按键为例,实现外部中断配置,使用按键触发中断进行LED灯控制。
    的头像 发表于 07-06 14:31 1038次阅读
    <b class='flag-5'>STM32F407</b> 外部中断<b class='flag-5'>配置</b><b class='flag-5'>步骤</b>

    STM32F407时钟配置学习

    STM32F407时钟配置学习。
    发表于 08-04 07:14

    如何对STM32F407 SPI模块进行配置

    STM32F407硬件SPI的初始化过程是怎样的?如何对STM32F407 SPI模块进行配置
    发表于 10-15 09:27

    stm32f407输出pwm波的配置步骤有哪些

    什么是脉冲宽度调制?stm32f407输出pwm波的配置步骤有哪些?
    发表于 10-25 07:15

    STM32F407 HAL库的按键中断配置步骤有哪些

    STM32F407 HAL库的中断管理是什么?STM32F407 HAL库的按键中断配置步骤有哪些?
    发表于 11-05 06:03

    STM32F407外部中断的一般配置步骤有哪些

    STM32F407把中断分为几个组呢?STM32F407外部中断的一般配置步骤有哪些?
    发表于 11-16 07:14

    STM32F407编程步骤是怎样的?

    STM32F407编程步骤是怎样的?
    发表于 12-13 06:12

    STM32F407的DAM输出配置有哪些步骤

    STM32F407的DAM输出配置有哪些步骤呢?怎样去实现其代码呢?
    发表于 01-25 07:22

    STM32f407配置过程分享

    STM32f407两个蓝牙模块通信配置蓝牙模块使用的是XY_MBD07,XY-MBD07A 模块有两种工作模式: AT 指令工作模式,串口数据透传模式。模组未建立连接时模块处于 AT指令工作模式,当
    发表于 02-21 07:12

    [STM32]STM32F407系列教程之二,gpio输入输出实验

    [STM32]STM32F407系列教程之二,gpio输入输出实验
    发表于 11-29 14:06 17次下载
    [<b class='flag-5'>STM32</b>]<b class='flag-5'>STM32F407</b>系列教程之二,<b class='flag-5'>gpio</b><b class='flag-5'>输入</b>输出实验

    STM32F407的串口UART 基础配置STM32CubeMX

    STM32F407的串口UART 基础配置STM32CubeMX
    发表于 11-29 16:06 51次下载
    <b class='flag-5'>STM32F407</b>的串口UART 基础<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX

    STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)

    STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)
    发表于 12-04 13:51 20次下载
    【<b class='flag-5'>STM32F407</b>开发板用户手册】第21章 <b class='flag-5'>STM32F407</b>的NVIC中断分组和<b class='flag-5'>配置</b>(重要)

    STM32F407开发板用户手册】第19章 STM32F407GPIO应用之按键FIFO

    STM32F407开发板用户手册】第19章 STM32F407GPIO应用之按键FIFO
    发表于 12-05 15:21 32次下载
    【<b class='flag-5'>STM32F407</b>开发板用户手册】第19章 <b class='flag-5'>STM32F407</b>的<b class='flag-5'>GPIO</b>应用之按键FIFO