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

    文章

    16840

    浏览量

    349722
  • 寄存器
    +关注

    关注

    31

    文章

    5281

    浏览量

    119746
  • 按键
    +关注

    关注

    4

    文章

    223

    浏览量

    57547
  • GPIO
    +关注

    关注

    16

    文章

    1186

    浏览量

    51795
  • STM32F407
    +关注

    关注

    15

    文章

    187

    浏览量

    29319
收藏 人收藏

    评论

    相关推荐

    STM32F407 GPIO输出配置配置步骤

    STM32F407ZGT6 是意法半导体(STMicroelectronics)公司推出的一款高性能ARM Cortex-M4核心的32位微控制器(MCU)。它是 STM32F4 系列的一员,具备强大的处理能力和丰富的外设功能,适用于各种应用领域
    的头像 发表于 07-06 14:27 1707次阅读
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>GPIO</b><b class='flag-5'>口</b>输出<b class='flag-5'>配置</b><b class='flag-5'>配置</b><b class='flag-5'>步骤</b>

    STM32F407 串口配置步骤

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

    STM32F407 位带配置步骤

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

    STM32F407 外部中断配置步骤

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

    CC2530 GPIO输入配置配置步骤

    介绍CC2530 GPIO输入配置配置
    的头像 发表于 07-06 14:40 2381次阅读
    CC2530 <b class='flag-5'>GPIO</b><b class='flag-5'>口</b><b class='flag-5'>输入</b><b class='flag-5'>配置</b><b class='flag-5'>配置</b><b class='flag-5'>步骤</b>

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

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

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

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

    stm32f407通信的代码

    stm32f407通信的代码 原理图还有封装 很清楚自己画的
    发表于 03-21 17:22 0次下载

    STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案

    STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案
    发表于 11-24 20:51 20次下载
    <b class='flag-5'>STM32</b>CubeMX <b class='flag-5'>配置</b><b class='flag-5'>STM32F407</b> 实现HAL库延时微妙方案

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

    [STM32]STM32F407系列教程之二,gpio输入输出实验
    发表于 11-29 14:06 19次下载
    [<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 54次下载
    <b class='flag-5'>STM32F407</b>的串口UART 基础<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX

    stm32f407引脚相关配置

    stm32f407的IO可由软件配置成8种模式:输入浮空、输入上拉、输入下拉、模拟
    发表于 12-02 15:51 15次下载
    <b class='flag-5'>stm32f407</b>引脚相关<b class='flag-5'>配置</b>

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

    STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)
    发表于 12-04 13:51 21次下载
    【<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 39次下载
    【<b class='flag-5'>STM32F407</b>开发板用户手册】第19章 <b class='flag-5'>STM32F407</b>的<b class='flag-5'>GPIO</b>应用之按键FIFO

    STM32F407的USB_HID 基础配置STM32CubeMX

    STM32F407的USB_HID 配置示例详解: (参考 : https://blog.csdn.net/zhanglifu3601881/article/details/89675307)工具
    发表于 12-28 19:59 20次下载
    <b class='flag-5'>STM32F407</b>的USB_HID 基础<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX