【STM32】按键检测实验主要程序代码分析
生活随笔
收集整理的這篇文章主要介紹了
【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】按键检测实验主要程序代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【STM32】跑马灯实验主要程序代码分析
- 下一篇: 【STM32】串口收发主要程序代码分析