找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6629|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于stm32f103R6 GPIO輸入—按鍵檢測(cè)程序(入門篇)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:482205 發(fā)表于 2019-3-2 22:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這個(gè)文件主要用于新手學(xué)習(xí)和了解如何利用固件庫(kù)編程來(lái)使GPIO口實(shí)現(xiàn)輸入。顟B(tài)從而使按鍵來(lái)控制點(diǎn)亮LED燈


不懂可以聯(lián)系我 互相學(xué)習(xí)共同進(jìn)步

單片機(jī)源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    bsp_key.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @brief   按鍵應(yīng)用bsp(掃描模式)

  7.   ******************************************************************************
  8.   */
  9.   
  10. #include "./key/bsp_key.h"  

  11. /**
  12.   * @brief  配置按鍵用到的I/O口
  13.   * @param  無(wú)
  14.   * @retval 無(wú)
  15.   */
  16. void Key_GPIO_Config(void)
  17. {
  18.         GPIO_InitTypeDef GPIO_InitStructure;
  19.         
  20.         /*開(kāi)啟按鍵端口的時(shí)鐘*/
  21.         RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK|KEY2_GPIO_CLK,ENABLE);
  22.         
  23.         //選擇按鍵的引腳
  24.         GPIO_InitStructure.GPIO_Pin = KEY1_GPIO_PIN;
  25.         // 設(shè)置按鍵的引腳為浮空輸入
  26.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  27.         //使用結(jié)構(gòu)體初始化按鍵
  28.         GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStructure);
  29.         
  30.         //選擇按鍵的引腳
  31.         GPIO_InitStructure.GPIO_Pin = KEY2_GPIO_PIN;
  32.         //設(shè)置按鍵的引腳為浮空輸入
  33.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  34.         //使用結(jié)構(gòu)體初始化按鍵
  35.         GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStructure);        
  36. }

  37. /*
  38. * 函數(shù)名:Key_Scan
  39. * 描述  :檢測(cè)是否有按鍵按下
  40. * 輸入  :GPIOx:x 可以是 A,B,C,D或者 E
  41. *                     GPIO_Pin:待讀取的端口位         
  42. * 輸出  :KEY_OFF(沒(méi)按下按鍵)、KEY_ON(按下按鍵)
  43. */
  44. uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
  45. {                        
  46.         /*檢測(cè)是否有按鍵按下 */
  47.         if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )  
  48.         {         
  49.                 /*等待按鍵釋放 */
  50.                 while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);   
  51.                 return         KEY_ON;         
  52.         }
  53.         else
  54.                 return KEY_OFF;
  55. }
  56. /*********************************************END OF FILE**********************/
復(fù)制代碼

所有資料51hei提供下載:
GPIO輸入—按鍵檢測(cè).7z (177.76 KB, 下載次數(shù): 62)




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:493694 發(fā)表于 2019-3-20 11:19 | 只看該作者
樓主,怎么沒(méi)看到main程序?
回復(fù)

使用道具 舉報(bào)

板凳
ID:493694 發(fā)表于 2019-3-20 11:21 | 只看該作者
樓主,看你輸入按鈕檢測(cè)程序? 沒(méi)有main程序嗎? 檢測(cè)都按鍵輸入后怎么 輸出繼電器呢? 能不能指點(diǎn)下,小白剛?cè)腴T
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表