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

    文章

    18074

    浏览量

    370888
  • 寄存器
    +关注

    关注

    31

    文章

    5447

    浏览量

    125382
  • 按键
    +关注

    关注

    4

    文章

    227

    浏览量

    58168
  • GPIO
    +关注

    关注

    16

    文章

    1289

    浏览量

    54424
  • STM32F407
    +关注

    关注

    15

    文章

    188

    浏览量

    30848
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32F407 GPIO输出配置配置步骤

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

    STM32F407 位带配置步骤

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

    STM32F407 外部中断配置步骤

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

    CC2530 GPIO输入配置配置步骤

    介绍CC2530 GPIO输入配置配置
    的头像 发表于 07-06 14:40 3813次阅读
    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 56次下载
    <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 16次下载
    <b class='flag-5'>stm32f407</b>引脚相关<b class='flag-5'>配置</b>

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

    STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)
    发表于 12-04 13:51 23次下载
    【<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 25次下载
    <b class='flag-5'>STM32F407</b>的USB_HID 基础<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX