精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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< 
 #define KEY1  (!!(GPIOE- >IDR&1< 
 #define KEY2  (!!(GPIOE- >IDR&1< 
 #define KEY_UP (!!(GPIOA- >IDR&1< 
 #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

    文章

    17019

    瀏覽量

    350374
  • 寄存器
    +關注

    關注

    31

    文章

    5325

    瀏覽量

    120052
  • 按鍵
    +關注

    關注

    4

    文章

    223

    瀏覽量

    57576
  • GPIO
    +關注

    關注

    16

    文章

    1196

    瀏覽量

    51934
  • STM32F407
    +關注

    關注

    15

    文章

    187

    瀏覽量

    29381
收藏 人收藏

    評論

    相關推薦

    STM32F407 GPIO輸出配置配置步驟

    STM32F407ZGT6 是意法半導體(STMicroelectronics)公司推出的一款高性能ARM Cortex-M4核心的32位微控制器(MCU)。它是 STM32F4 系列的一員,具備強大的處理能力和豐富的外設功能,適用于各種應用領域
    的頭像 發表于 07-06 14:27 ?1780次閱讀
    <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 ?2961次閱讀
    <b class='flag-5'>STM32F407</b> 串口<b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    STM32F407 位帶配置步驟

    介紹STM32F407位帶操作方法,設置寄存器的偏移量,實現按GPIO指定位進行讀寫操作,方便編程。
    的頭像 發表于 07-06 14:30 ?1180次閱讀
    <b class='flag-5'>STM32F407</b> 位帶<b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    STM32F407 外部中斷配置步驟

    介紹STM32F407外部中斷配置步驟,以按鍵為例,實現外部中斷配置,使用按鍵觸發中斷進行LED燈控制。
    的頭像 發表于 07-06 14:31 ?1890次閱讀
    <b class='flag-5'>STM32F407</b> 外部中斷<b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    CC2530 GPIO輸入配置配置步驟

    介紹CC2530 GPIO輸入配置配置
    的頭像 發表于 07-06 14:40 ?2482次閱讀
    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 ?55次下載
    <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