1 #include "stm32f10x.h"// 相當於51單片機中的 #include <reg51.h> 2 #include "stm32f10x_gpio.h" 3 /*通過按鍵實現LED燈的亮滅 4 *本項目是兩個效果,燒程序時注意分開!!!!! 5 *1、LED實現的效果實是K1一直按下LED一直亮,直到K1松開LED熄滅 6 *2、按一下key實現LED亮,再按一下實現LED滅 7 * 8 */ 9 10 /*配置GPIO 11 *step1配置時鍾 12 *結構體:Speed、Mode、Pin 13 *初始化 14 */ 15 int main(void) 16 { 17 //點亮紅色燈 18 //step1:使能 19 20 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 21 //結構體 22 GPIO_InitTypeDef a; 23 a.GPIO_Speed=GPIO_Speed_50MHz; 24 a.GPIO_Pin=GPIO_Pin_5; 25 //推挽輸出 26 a.GPIO_Mode=GPIO_Mode_Out_PP; 27 //調用GPIO初始化函數 28 GPIO_Init(GPIOB,&a); 29 //設置PB5為低點平 30 //GPIO_ResetBits(GPIOB,GPIO_Pin_5); 31 //GPIO_SetBits(GPIOB,GPIO_Pin_5); 32 33 34 35 /**************按鍵初始*************/ 36 37 //step1:時鍾使能 38 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); 39 //step2:定義GPIO初始化結構體變量 40 GPIO_InitTypeDef b; 41 b.GPIO_Speed=GPIO_Speed_50MHz; 42 b.GPIO_Pin=GPIO_Pin_0; 43 //浮空輸入 44 b.GPIO_Mode=GPIO_Mode_IN_FLOATING; 45 //stept3:調用GPIO初始化函數 46 GPIO_Init(GPIOA,&b); 47 /************************1********************************/ 48 /* 49 *知識點:讀取電平的函數:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0); 50 *詳細見后面截圖 51 */ 52 53 /*LED實現的效果實是K1一直按下LED一直亮,直到K1松開LED熄滅*/ 54 55 while(1)//死循環隨時檢測按鍵的情況 56 { 57 //讀取引腳的點平並賦值給i 58 int i = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0); 59 if(i==0)//判斷K1的電平是否為0 60 { 61 //為0時,設置PB5為高電平, 62 GPIO_SetBits(GPIOB,GPIO_Pin_5); 63 } 64 else 65 { 66 67 //設置PB5為低點平 68 GPIO_ResetBits(GPIOB,GPIO_Pin_5); 69 } 70 } 71 72 73 /***************************2*********************************/ 74 /*********以下代碼實現按鍵按一下LED亮,再按以下LED滅*********/ 75 int pre=0;//上一次循環按鍵的點平 76 while(1) 77 { 78 //讀取引腳的點平 79 int states = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0); 80 if(states==0&&pre==1)//states是循環時檢測的電平,難點在這??????????? 81 { 82 //按鍵剛松開那一刻,states馬上變為0,但是上一次循環中給pre賦的值還是1 83 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//再判斷是否為低電平 84 { 85 //給GPIOB端口5賦值為高電平,實現LED亮 86 GPIO_SetBits(GPIOB,GPIO_Pin_5); 87 } 88 else 89 { 90 //給GPIOB端口5賦值為低電平,實現LED滅 91 GPIO_ResetBits(GPIOB,GPIO_Pin_5); 92 } 93 } 94 pre=states;//把本次循環按鍵的電平賦值給上一次 95 } 96 /*******************************************************************/ 97 }

