博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过按键实现LED灯的亮灭(含两种情况)
阅读量:7099 次
发布时间:2019-06-28

本文共 2603 字,大约阅读时间需要 8 分钟。

 

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 /*配置GPIO11 *step1配置时钟12 *结构体:Speed、Mode、Pin13 *初始化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 //读取引脚的点平并赋值给i58 int i = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);59 if(i==0)//判断K1的电平是否为060 {61 //为0时,设置PB5为高电平,62 GPIO_SetBits(GPIOB,GPIO_Pin_5);63 }64 else65 {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赋的值还是183 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//再判断是否为低电平84 {85 //给GPIOB端口5赋值为高电平,实现LED亮86 GPIO_SetBits(GPIOB,GPIO_Pin_5);87 }88 else89 {90 //给GPIOB端口5赋值为低电平,实现LED灭91 GPIO_ResetBits(GPIOB,GPIO_Pin_5);92 }93 }94 pre=states;//把本次循环按键的电平赋值给上一次95 }96 /*******************************************************************/ 97 }

 

 

 

 

 

转载于:https://www.cnblogs.com/kinson/p/7689100.html

你可能感兴趣的文章
Python类与标准库
查看>>
学生表、课程表、 成绩表 、教师表sql练习
查看>>
vue inheritAttrs、$attrs和$listeners使用
查看>>
诗歌的分类
查看>>
nexus maven私服搭建
查看>>
系统空间占用排查 tomcat超大日志catalina.out 删除 与df 状态更新
查看>>
Flutter完整开发实战详解
查看>>
Myeclipse如何改变编码方式
查看>>
ios7 设置status bar风格
查看>>
Android Service 组件
查看>>
TRUNC 截取日期或数字,返回指定的值。
查看>>
【erlang】erlang几种生成随机数的方法
查看>>
BizTalk开发系列(二十二) 开发自定义Map Functoid
查看>>
在Windows Mobile和Wince(Windows Embedded CE)下Win32项目加入ATL支持
查看>>
在Asp.Net MVC中用Ajax回调后台方法
查看>>
JAVA-JDBC
查看>>
.Net中的反射(动态创建类型实例) - Part.4
查看>>
.net测试学习--理解.net测试选项
查看>>
让我感动的100对古装情侣
查看>>
[hihoCoder] #1093 : 最短路径·三:SPFA算法
查看>>