日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【STM32】按键检测实验主要程序代码分析

發布時間:2025/4/5 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STM32】按键检测实验主要程序代码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • main.c
  • key.c
  • key.h

main.c

#include "led.h" #include "delay.h" #include "sys.h" #include "key.h" //ALIENTEK Mini STM32 開發板范例代碼 2 //按鍵輸入實驗 //技術支持: www.openedv.com //廣州市星翼電子科技有限公司 int main(void) {u8 t;delay_init(); //延時函數初始化LED_Init(); //初始化與 LED 連接的硬件接口KEY_Init(); //初始化與按鍵連接的硬件接口LED0 = 0; //點亮 LEDwhile(1){t = KEY_Scan(0); //得到鍵值switch(t){case KEY0_PRES: LED0 = !LED0; break;case KEY1_PRES: LED1 = !LED1; break;case WKUP_PRES: LED0 = !LED0; LED1 = !LED1; break;default:delay_ms(10);}} }

key.c

#include "key.h" #include "delay.h" //按鍵初始化函數 //PA15 和 PC5 設置成輸入 void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE); //使能 PORTA,PORTC 時鐘GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //關閉 jtag,使能 SWD,可以用 SWD 模式調試GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; //PA15GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //設置成上拉輸入GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA15GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PC5GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //設置成上拉輸入GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化 GPIOC5GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PA0GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 設置成輸入,默認下拉GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA.0 } //按鍵處理函數 //返回按鍵值 //mode:0,不支持連續按;1,支持連續按; //返回值: //0,沒有任何按鍵按下 //KEY0_PRES, KEY0 按下 //KEY1_PRES, KEY1 按下 //WKUP_PRES, WK_UP 按下 //注意此函數有響應優先級,KEY0>KEY1>WK_UP!! u8 KEY_Scan(u8 mode) {static u8 key_up=1; //按鍵按松開標志if(mode)key_up=1; //支持連按if(key_up&&(KEY0==0||KEY1==0||WK_UP==1)){delay_ms(10); //去抖動key_up=0;if(KEY0==0) return KEY0_PRES;else if(KEY1==0) return KEY1_PRES;else if(WK_UP==1) return WKUP_PRES;}else if(KEY0==1&&KEY1==1&&WK_UP==0) key_up=1;return 0; // 無按鍵按下 }

key.h

#ifndef __KEY_H #define __KEY_H #include "sys.h" #define KEY0 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5) //讀取按鍵 0 #define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15) //讀取按鍵 1 #define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) //讀取按鍵 2 #define KEY0_PRES 1 //KEY0 #define KEY1_PRES 2 //KEY1 #define WKUP_PRES 3 //WK_UP void KEY_Init(void); //IO 初始化 u8 KEY_Scan(u8 mode); //按鍵掃描函數 #endif

總結

以上是生活随笔為你收集整理的【STM32】按键检测实验主要程序代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。