在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32的GPIO輸入編程實例之讀取按鍵狀態

2oON_changxuemc ? 2018-02-10 11:08 ? 次閱讀

一、概述

1、按鍵簡介

按鍵是一種機械器件,按鍵兩端分別對應某電路的兩個斷點,我們可以通過按鍵接通和斷開控制該電路的電壓等參數,我們利用按鍵做的應用通常有控制繼電器、鍵盤、復位等。隨著應用的擴展,按鍵已成為電路板上不可或缺的一部分。

2、按鍵類別簡介

按鍵主要有四種類型:常開帶復位、常開不帶復位、常閉帶復位、常閉不帶復位。(本次實驗使用的是常開帶復位按鍵)

按鍵主要有以下4種工作模式:

常開帶復位:初始默認狀態是開路,當受力按下時按鍵使電路連通,受力結束后其自動返回開路狀態。 常開帶不復位:初始默認狀態是開路,每按下一次按鍵改變一次開閉狀態。 常閉帶復位:初始默認狀態是連通,當受力按下時按鍵使電路開路,受力結束后其自動返回連通狀態。 常閉不帶復位:初始默認狀態是連通,每按下一次按鍵改變一次開閉狀態。 3、按鍵消抖

使用手動按鍵的時候,由于機械抖動可能造成按鍵的錯誤識別。一般手動按下按鍵然后釋放,按鍵兩片金屬膜接觸的時間大約為50ms,按鍵松開到穩定的時間為5-10ms。因此,如果在首次檢測到按鍵被按下后延時20ms左右再次檢測,即可確認是否真的有按鍵被按下,從而消除按鍵抖動造成的錯誤識別。本實驗通過給于一定延時后再進行檢測,從而有效的避免了按鍵抖動帶來的誤判。

二、硬件電路

iCore3雙核心開發板中,采用一個獨立的按鍵與STM32F407的PH15相連,限流電阻為1K。

三、實驗原理

按鍵的一端與STM32的GPIO(PH15)相連,另外一端接地,且PH15外接一個1K電流大小的上拉電阻。初始化時把PH15設置成輸入模式,當按鍵彈起時,PH15由于上拉電阻的作用呈高電平(3.3V);當按鍵按下時,PH15直接被按鍵短接到GND,呈低電平。因此判斷PH15的電平變化,可得到按鍵狀態。

四、源代碼

1、主函數

/*

* Name : main

* Description : ---

* Author : ysloveivy.

*

* History

* --------------------

* Rev : 0.00

* Date : 11/21/2015

*

* create.

* --------------------

*/

int main(void)

{

int i;

static int work_status = 0; //三色LED燈工作狀態

static int key_status = 1; //按鍵松開標置

led.initialize(); //三色LED燈端口初始化

key.initialize();

while(1){

if(KEY_INPUT)key_status = 1;

if(key_status == 1){

if(!KEY_INPUT){

for(i = 0;i < 10000;i++); //按鍵防抖動

if(!KEY_INPUT){

key_status = 0;

work_status += 1;

if(work_status > 2)work_status = 0;

//操作 LED

switch(work_status){

case 0:

LED_RED_ON;

LED_GREEN_OFF;

LED_BLUE_OFF;

break;

case 1:

LED_RED_OFF;

LED_GREEN_ON;

LED_BLUE_OFF;

break;

case 2:

LED_RED_OFF;

LED_GREEN_OFF;

LED_BLUE_ON;

break;

default:

break;

}

}

}

}

}

}

2、GPIO初始化

LED的GPIO初始化配置方式與上一講一致,以下是按鍵的GPIO初始化程序

/*

* Name : initialize

* Description : ---

* Author : ysloveivy.

*

* History

* --------------------

* Rev : 0.00

* Date : 11/21/2015

*

* create.

* --------------------

*/

static int initialize(void)

{

GPIO_InitTypeDef GPIO_uInitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH,ENABLE);

//設置連接按鍵的IO端口

GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_15;

//設置端口為輸入模式

GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_IN;

//設置速度為第三級

GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;

//設置輸入端口不變化

GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

//把設置的參數用到結構體

GPIO_Init(GPIOH, &GPIO_uInitStructure);

return 0;

}

3、小知識

voidRCC_AHB1PeriphClockCmd

(uint32_tRCC_AHB1Periph,FunctionalStateNewState)

此函數為外設使能函數,第一個參數為需要被使能的外設,第二個參數為使能與否。可能很多讀者看到這函數不知道如何入手,不知道參數填啥子好,別急,咱先查看一下他的定義:

查看定義方法:雙擊函數名選中,右擊再點GO TODefinition of ...就可以查看咯。

RCC_AHB1PeriphClockCmd函數定義如下:

void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState)

{

/* Check the parameters */

assert_param(IS_RCC_AHB1_CLOCK_PERIPH(RCC_AHB1Periph));

assert_param(IS_FUNCTIONAL_STATE(NewState));

if (NewState != DISABLE)

{

RCC->AHB1ENR |= RCC_AHB1Periph;

}

else

{

RCC->AHB1ENR &= ~RCC_AHB1Periph;

}

}

注意被我標紅的字符串,按照剛剛查定義的方法,它會告訴我們函數的參數可以填啥。如查看IS_FUNCTIONAL_STATE:

#define IS_FUNCTIONAL_STATE(STATE)

(((STATE) == DISABLE) || ((STATE) == ENABLE))

我們可以看出第二個參數可填寫DISABLE(使能)和ENABLE(不使能)。

小結:上面用外設的使能函數為大家介紹了查看函數的方法,此方法在實際應用經常可以用到,當我們在閱讀、修改程序的時候,遇到哪些不太清楚的函數,就可以用這種方法查看。

五、實驗現象

按鍵每按下一次,ARM·LED顏色變換(紅色、綠色、藍色輪流交換)一次。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2273

    文章

    10926

    瀏覽量

    357780
  • GPIO
    +關注

    關注

    16

    文章

    1217

    瀏覽量

    52440

原文標題:STM32學習2:GPIO輸入實驗——讀取按鍵狀態

文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    i.MX6ULL 驅動開發7—按鍵輸入捕獲與GPIO輸入配置與高低電平讀取

    本篇主要介紹了i.MX6ULL的按鍵檢測的使用,主要的知識點是設備樹的修改,以及GPIO輸入配置與高低電平的讀取
    的頭像 發表于 05-24 09:11 ?6351次閱讀
    i.MX6ULL 驅動開發7—<b class='flag-5'>按鍵</b><b class='flag-5'>輸入</b>捕獲與<b class='flag-5'>GPIO</b><b class='flag-5'>輸入</b>配置與高低電平<b class='flag-5'>讀取</b>

    【HAL庫每天一例】第004例:GPIO-按鍵狀態判斷掃描式

    GPIO輸出高低電平實現LED燈亮滅,現在是時鐘GPIO輸入模式,按鍵按下時會改變GPIO的電平,對應的
    發表于 05-09 10:06

    講講關于GPIO按鍵輸入的關鍵要點

    上次我們講解了操作STM32GPIO-輸出的3種方法和關鍵代碼,這節我們講關于GPIO按鍵輸入的關鍵要點,分為
    發表于 12-09 06:33

    arm7單片機編程實例,ARM7輸入/輸出端口GPIO編程教程

    ARM7輸入/輸出端口GPIO編程教程
    發表于 04-19 14:43 ?2723次閱讀
    arm7單片機<b class='flag-5'>編程</b><b class='flag-5'>實例</b>,ARM7<b class='flag-5'>之</b><b class='flag-5'>輸入</b>/輸出端口<b class='flag-5'>GPIO</b><b class='flag-5'>編程</b>教程

    GPIO輸入--按鍵

    程序簡介 -工程名稱:GPIO輸入--按鍵 -實驗平臺: 秉火STM32 F429 開發板 -MDK版本:5.16 -ST固件庫版本:1.5.1 【 !】功能簡介: 使用兩個
    發表于 12-12 19:08 ?3次下載

    STM32--固件庫使用--按鍵輸入

    STM32–固件庫使用–按鍵輸入簡介1.硬件STM32F103C8T6 獨立按鍵2.軟件keil軟件硬件部分軟件部分key.c#includ
    發表于 11-21 17:51 ?15次下載
    <b class='flag-5'>STM32</b>--固件庫使用--<b class='flag-5'>按鍵</b><b class='flag-5'>輸入</b>

    STM32F103-入門基礎實驗-GPIO輸入-按鍵(查詢/中斷)控制LED核心代碼(固件庫版)

    上次我們講解了操作STM32GPIO-輸出的3種方法和關鍵代碼,這節我們講關于GPIO按鍵輸入的關鍵要點,分為
    發表于 11-26 13:21 ?0次下載
    <b class='flag-5'>STM32</b>F103-入門基礎實驗-<b class='flag-5'>GPIO</b><b class='flag-5'>輸入</b>-<b class='flag-5'>按鍵</b>(查詢/中斷)控制LED核心代碼(固件庫版)

    2、【STM32F0系列學習】—通用輸入輸出端口(GPIO)

    STM32F0系列學習】—通用輸入輸出端口GPIO1、GPIO端口配置說明1、GPIO端口配
    發表于 11-29 16:51 ?66次下載
    2、【<b class='flag-5'>STM32</b>F0系列學習】<b class='flag-5'>之</b>—通用<b class='flag-5'>輸入</b>輸出端口(<b class='flag-5'>GPIO</b>)

    STM32學習筆記1——軟硬件基礎keil5編程GPIO開發

    STM32學習筆記1——軟硬件基礎keil5編程GPIO開發
    發表于 11-30 12:36 ?4次下載
    <b class='flag-5'>STM32</b>學習筆記1——軟硬件基礎<b class='flag-5'>之</b>keil5<b class='flag-5'>編程</b>與<b class='flag-5'>GPIO</b>開發

    Linux應用開發【第九章】GPIO編程應用開發

    設置GPIO方向 9.4.3 GPIO輸出實驗-LED輸出控制 9.4.4 GPIO輸入試驗-按鍵
    的頭像 發表于 12-10 19:21 ?845次閱讀
    Linux應用開發【第九章】<b class='flag-5'>GPIO</b><b class='flag-5'>編程</b>應用開發

    STM32 按鍵輸入實驗

    加粗樣式一.實驗目的1.熟悉使用STM32F4XX開發板2.掌握其GPIO的使用方法3.掌握按鍵的實現方法二.實現步驟(1)使能按鍵對應IO口時鐘。調用函數
    發表于 12-27 18:53 ?4次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>按鍵</b><b class='flag-5'>輸入</b>實驗

    STM32基本GPIO操作:按鍵輸入(掃描+外部中斷)

    STM32基本GPIO操作:按鍵輸入(掃描+外部中斷)本文章向大家介紹STM32基本GPIO操作
    發表于 12-29 19:27 ?13次下載
    <b class='flag-5'>STM32</b>基本<b class='flag-5'>GPIO</b>操作:<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次下載
    <b class='flag-5'>STM32</b>筆記<b class='flag-5'>之</b><b class='flag-5'>按鍵</b>KEY<b class='flag-5'>輸入</b>

    GPIO讀取按鈕狀態

    樹莓派的GPIO可以控制發光二極管,這是GPIO的Output(輸出)能力,它也具有input(讀取)的能力,所以才能叫做I/O(輸入/輸出)端口。今天我們就來用
    的頭像 發表于 07-02 15:06 ?1836次閱讀
    用<b class='flag-5'>GPIO</b><b class='flag-5'>讀取</b>按鈕<b class='flag-5'>狀態</b>

    stm32怎么讀取io口輸入電平

    讀取STM32的IO口輸入電平,你可以使用GPIO外設來完成。GPIO是通用輸入輸出端口,它可
    的頭像 發表于 01-05 11:46 ?5141次閱讀
    主站蜘蛛池模板: 综合天天色 | 亚洲一区中文字幕在线 | 足控免费视频xxav | 国产女主播在线播放一区二区 | 国产视频日本 | 神马影院午夜在线 | 三级理论在线观看 | 自拍偷拍综合网 | 国产亚洲欧美日本一二三本道 | 五月天婷婷久久 | 五月婷婷俺也去开心 | 国产成人毛片毛片久久网 | 男人的午夜天堂 | 免费在线视频你懂的 | 免费被视频网站在线观看 | 四虎永久网址影院 | 伊人2233| 日韩免费高清一级毛片在线 | 天天舔天天射天天操 | 色婷婷六月桃花综合影院 | 中国一级特黄真人毛片免费看 | 四虎在线视频观看 | 超级乱淫片67194免费看 | 2o18国产大陆天天弄 | 很黄网站 | 色播基地| 天天夜天干天天爽 | 免费免播放器在线视频观看 | 欧美一级淫片免费播放口 | 成年女人毛片免费观看97 | 日日爽夜夜 | 999毛片| 年下系列高h文 | 日韩一二三级 | 亚洲色图第一页 | 在线观看视频在线观看 | 天堂8中文在线最新版在线 天堂8资源8在线 | 色综合久久综精品 | 男女性高爱麻豆 | 国产午夜精品久久久久免费视小说 | 高清成年美女xx免费网站黄 |