色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內(nèi)不再提示

STM32的GPIO輸入編程實例之讀取按鍵狀態(tài)

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

一、概述

1、按鍵簡介

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

2、按鍵類別簡介

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

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

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

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

二、硬件電路

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

三、實驗原理

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

四、源代碼

1、主函數(shù)

/*

* 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燈工作狀態(tài)

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);

//設(shè)置連接按鍵的IO端口

GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_15;

//設(shè)置端口為輸入模式

GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_IN;

//設(shè)置速度為第三級

GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;

//設(shè)置輸入端口不變化

GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

//把設(shè)置的參數(shù)用到結(jié)構(gòu)體

GPIO_Init(GPIOH, &GPIO_uInitStructure);

return 0;

}

3、小知識

voidRCC_AHB1PeriphClockCmd

(uint32_tRCC_AHB1Periph,FunctionalStateNewState)

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

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

RCC_AHB1PeriphClockCmd函數(shù)定義如下:

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;

}

}

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

#define IS_FUNCTIONAL_STATE(STATE)

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

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

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

五、實驗現(xiàn)象

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

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

    關(guān)注

    2276

    文章

    10947

    瀏覽量

    359163
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1223

    瀏覽量

    52745

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

    本篇主要介紹了i.MX6ULL的按鍵檢測的使用,主要的知識點是設(shè)備樹的修改,以及GPIO輸入配置與高低電平的讀取
    的頭像 發(fā)表于 05-24 09:11 ?6441次閱讀
    i.MX6ULL 驅(qū)動開發(fā)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-按鍵狀態(tài)判斷掃描式

    GPIO輸出高低電平實現(xiàn)LED燈亮滅,現(xiàn)在是時鐘GPIO輸入模式,按鍵按下時會改變GPIO的電平,對應(yīng)的
    發(fā)表于 05-09 10:06

    講講關(guān)于GPIO按鍵輸入的關(guān)鍵要點

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

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

    ARM7輸入/輸出端口GPIO編程教程
    發(fā)表于 04-19 14:43 ?2740次閱讀
    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 開發(fā)板 -MDK版本:5.16 -ST固件庫版本:1.5.1 【 !】功能簡介: 使用兩個
    發(fā)表于 12-12 19:08 ?3次下載

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

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

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

    上次我們講解了操作STM32GPIO-輸出的3種方法和關(guān)鍵代碼,這節(jié)我們講關(guān)于GPIO按鍵輸入的關(guān)鍵要點,分為
    發(fā)表于 11-26 13:21 ?0次下載
    <b class='flag-5'>STM32</b>F103-入門基礎(chǔ)實驗-<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端口配
    發(fā)表于 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——軟硬件基礎(chǔ)keil5編程GPIO開發(fā)

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

    Linux應(yīng)用開發(fā)【第九章】GPIO編程應(yīng)用開發(fā)

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

    STM32 按鍵輸入實驗

    加粗樣式一.實驗?zāi)康?.熟悉使用STM32F4XX開發(fā)板2.掌握其GPIO的使用方法3.掌握按鍵的實現(xiàn)方法二.實現(xiàn)步驟(1)使能按鍵對應(yīng)IO口時鐘。調(diào)用函數(shù)
    發(fā)表于 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操作
    發(fā)表于 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輸入

    關(guān)于STM32學習分享第二章 按鍵輸入控制文章目錄前言二、代碼1.key.c2.key.h3.main.c總結(jié)前言開始!開始!單片機的按鍵配置為輸入
    發(fā)表于 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讀取按鈕狀態(tài)

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

    stm32怎么讀取io口輸入電平

    讀取STM32的IO口輸入電平,你可以使用GPIO外設(shè)來完成。GPIO是通用輸入輸出端口,它可
    的頭像 發(fā)表于 01-05 11:46 ?5278次閱讀
    主站蜘蛛池模板: 香港论理午夜电影网 | 国产人妻人伦精品久久久 | 国产WW久久久久久久久久 | 超碰v| 欧美精品乱码99久久蜜桃 | 免费A级毛片无码鲁大师 | chinese帅哥gv在线看 | 中文字幕视频免费在线观看 | 日本国产精品无码一区免费看 | 高清国产激情视频在线观看 | 国产3级在线 | 午夜AV内射一区二区三区红桃视 | 羞羞影院午夜男女爽爽免费 | 快播电影官方网站 | 国产 亚洲 中文在线 字幕 | 白丝美女被狂躁免费漫画 | 国产永久免费视频 | 亚洲va久久久久 | 护士一级片 | 午夜亚洲WWW湿好大 午夜性爽视频男人的天堂在线 | 日本熟妇乱人伦A片精品软件 | 免费精品国产人妻国语麻豆 | 蜜芽无码亚洲资源网站 | 中文国产乱码在线人妻一区二区 | 久久精品中文字幕 | 亚洲视频网站欧美视频网站 | 456亚洲人成在线播放网站 | 伊人久久99热这里只有精品 | 青青青视频在线 | 小莹的性荡生活 | 亚洲精品AV无码重口另类 | 公交车轮C关老师 | 亚洲视频 在线观看 | 天天躁躁水汪汪人碰人 | 双手绑在床头调教乳尖 | 免费可以看黄的视频s色 | 午夜一区欧美二区高清三区 | 老少配xxxxx欧美 | 一区二区三区福利视频 | 免费观看成人www精品视频在线 | 久久成人免费观看全部免费 |