[課程-013GPIO輸入——按鍵檢測]

一羹膳、按鍵檢測原理

開發(fā)板上的按鍵1是接在了GPIOA->IDR寄存器上了梨水,只要通過讀取其寄存器狀態(tài)即可。

二插勤、 代碼分析

  1. 首先構(gòu)建bsp_key.hbsp_key.c兩文件于/USER/KEY文件夾內(nèi)泳挥;

  2. Keil MDK 工程里導(dǎo)入文件路徑

  3. bsp_key.h文件主要寫一些方便以后修改方便的然痊、看起來簡潔的宏定義,以及#incude一些必要的頭文件屉符、寫在.c文件里的函數(shù)聲明

    #ifndef __BSP_KEY_H__
    #define __BSP_KEY_H__
    
    #include "stm32f10x.h"
    
    #define         KEY_ON              1
    #define         KEY_OFF             0
    
    #define         KEY1_GPIO_PIN       GPIO_Pin_0              //對應(yīng)的值
    #define         KEY1_GPIO_PORT      GPIOA                   //外設(shè)GPIOA
    #define         KEY1_GPIO_CLK       RCC_APB2Periph_GPIOA    //掛載時鐘
    
    uint8_t Key_Scan(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);   //函數(shù)聲明
    void KEY_GPIO_Config(void);
    
    #endif /* __BSP_KEY_H__ */
    
    
    
  1. bsp_key.c 位于/USER/KEY文件夾內(nèi)剧浸。主要就是寫一些關(guān)于初始化和功能的函數(shù),供main主函數(shù)的使用矗钟。

    #include "bsp_key.h"
    
    void KEY_GPIO_Config(void)
    {
        GPIO_InitTypeDef GPIO_InitStruct;
        
        RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK,ENABLE);
        
        GPIO_InitStruct.GPIO_Pin = KEY1_GPIO_PIN;       
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //浮空模式  
        
        GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStruct);
    
    }
    
    uint8_t Key_Scan(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
    {
        if(  GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )
        {
            while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);
            return KEY_ON;
        }
        else return KEY_OFF;
    }
    
    

附錄1 C語言異或用法

  1. 符號:^

  2. 名稱:異或唆香,C語言的一個二進(jìn)制運(yùn)算符

  3. 功能表:相同為零;不同為一吨艇。

13.png
  1.  0⊕0=0,0⊕1=1
     1⊕0=1,1⊕1=0
    
  2.  #define LED_G_TOGGLE        {LED_G_GPIO_PORT->ODR ^= LED_G_GPIO_PIN;}
    

附錄2 GPIO輸出模式

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末躬它,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子东涡,更是在濱河造成了極大的恐慌冯吓,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疮跑,死亡現(xiàn)場離奇詭異组贺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祸挪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門锣披,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贿条,你說我怎么就攤上這事≡鋈龋” “怎么了整以?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長峻仇。 經(jīng)常有香客問我公黑,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任凡蚜,我火速辦了婚禮人断,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朝蜘。我一直安慰自己恶迈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布谱醇。 她就那樣靜靜地躺著暇仲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪副渴。 梳的紋絲不亂的頭發(fā)上奈附,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機(jī)與錄音煮剧,去河邊找鬼斥滤。 笑死,一個胖子當(dāng)著我的面吹牛勉盅,可吹牛的內(nèi)容都是我干的中跌。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼菇篡,長吁一口氣:“原來是場噩夢啊……” “哼漩符!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驱还,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤嗜暴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后议蟆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闷沥,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年咐容,在試婚紗的時候發(fā)現(xiàn)自己被綠了舆逃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡戳粒,死狀恐怖路狮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔚约,我是刑警寧澤奄妨,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站苹祟,受9級特大地震影響砸抛,放射性物質(zhì)發(fā)生泄漏评雌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一直焙、第九天 我趴在偏房一處隱蔽的房頂上張望景东。 院中可真熱鬧,春花似錦奔誓、人聲如沸斤吐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曲初。三九已至,卻和暖如春杯聚,著一層夾襖步出監(jiān)牢的瞬間臼婆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工幌绍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颁褂,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓傀广,卻偏偏與公主長得像颁独,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伪冰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361