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 }