1 #include 'stm32f10x.h'// 相当于51单片机中的 #include
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 }