首页 > 其他分享 >按键控制灯的亮灭

按键控制灯的亮灭

时间:2023-09-05 19:00:54浏览次数:25  
标签:控制 LED Pin 引脚 GPIOx 按键 GPIO

1.写两个按键的驱动文件

按键控制灯的亮灭_寄存器

2.进行按键引脚的初始化,注意这里是输入模式,设置为浮空输入

按键控制灯的亮灭_按键_02

3.再写一个按键检测函数

//按键检测
uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{
	if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==1)//读取引脚的输入
	{
		//松手检测,如果按着不放,则一直在这里循环
		while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==1);
		return 1;
	}else
	return 0;
}

4.在灯的头文件里面写一个灯的引脚电平翻转程序

#define LED_B_TOGGLE  {GPIOB->ODR ^= GPIO_Pin_1;}

灯的引脚为PB1,其中GPIO_Pin_1为0x0002,ODR寄存器每次与该引脚异或都会改变输出电平。所以按一次按键灯的状态改变一次。

5.最后主程序控制代码如下

int main(void)
{
	GPIO_LED_Config();
	KEY_Config();
	while(1)
	{
		if(Key_Scan(GPIOA,GPIO_Pin_0)==1)//判断是否按下按键且松手
			LED_B_TOGGLE;	
	}
}

按键的引脚为PA0,每次检测引脚是否被按下,如按下则引脚输入了高电平,灯电平翻转一次。





标签:控制,LED,Pin,引脚,GPIOx,按键,GPIO
From: https://blog.51cto.com/u_15932905/7378587

相关文章

  • 【Python爬虫笔记】爬虫代理IP与访问控制
    一、前言在进行网络爬虫的开发过程中,有许多限制因素阻碍着爬虫程序的正常运行,其中最主要的一点就是反爬虫机制。为了防止爬虫程序在短时间内大量地请求同一个网站,网站管理者会使用一些方式进行限制。这时候,代理IP就是解决方案之一。本文主要介绍如何在爬虫程序中使用代理IP以应对反......
  • dotnet 将控制台 Console
    很多伙伴喜欢使用Console.WriteLine打日志,也许是打起来顺手。打完了之后,又想着,要是能够输出到本机文件那就更好了。既然很多伙伴都有这个想法,那dotnet自然就是有方便的方法让咱来实现此需求。只需要调用Console.SetOut方法,即可将控制台的输出重定向到一个TextWriter里面,只......
  • MySQL入门系列2-数据控制语言(DCL)
    一、概念DCL数据控制语言,用来管理数据库用户、控制数据库的访问权限。二、查询用户select*frommysql.user;其中Host代表当前用户访问的主机,如果为localhost,代表只能够在当前本机访问,不可以远程访问的。User代表的是访问该数据库的用户名。在MySQL中需要通过Host和User来唯......
  • 思科无线:将⼀个AP转换为ME模式(思科 Mobility Express、内嵌在AP上的无线控制器 )
    (转)思科无线:将⼀个AP转换为ME模式(思科MobilityExpress、内嵌在AP上的无线控制器)将⼀个AP转换为ME模式 思科MobilityExpress概述(内嵌在AP上的无线控制器功能)这是一种嵌入在思科Aironet®1560、1815W、1815I、1830、1850、2800和3800系列802.11acWave2无线接入点......
  • AspNetCore依赖注入在控制台的应用
    ①安装包:Microsoft.Extensions.DependencyInjection②应用主方法里面://接口IService,实现:Service,方法:Execute();varserviceProvider=newServiceCollection().AddSingleton<IService,Service>().BuildServiceProvider();var......
  • rocetmq搭建控制台
    1.概述使用单机版进行搭建社区提供了控制台:https://github.com/apache/rocketmq-dashboardmvncleanpackage-Dmaven.test.skip=true 2.环境变量但是这个时候要注意,在这个项目的application.yml中需要指定nameserver的地址。默认这个属性是指向本地。如果......
  • 【ROS2机器人入门到实战】学会使用按键-GPIO输入
    3.学会使用按键-GPIO输入写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是爱吃鱼香ROS的小鱼。上一节完成了LED灯的......
  • 7并发控制
    事务的ACID特性事务A原子性:操作要么全部成功,要么全部失败回滚C一致性:一个一致性状态变换到另一个一致性状态:扣500,另一个得500I隔离性:独立性D持久性:改变是永久性的 并发产生的问题:丢失更新(中途写回,丢失了一个修改被覆盖)   不可重复读问题(第二次读的数据不一样,被中途......
  • JAVA-基本程序设计结构(控制流程、数组)
    1.控制流程1.块作用域1.块(即复合语句)由若干条Java语句组成,并用一对大括号括起来。2.块确定了变量的作用域。3.一个块可以嵌套在另一个块中。但是不能在嵌套的两个块中声明同名的变量。2.顺序控制顺序控制:程序从上到下逐行地进行,中间没有任何判断和跳转Java中定义成员变量时......
  • 如何通过C++开发高效的机器人控制程序
    如何通过C++开发高效的机器人控制程序导语:随着人工智能和机器人技术的不断发展,机器人控制程序的开发变得越来越重要。本文将介绍如何使用C++语言开发高效的机器人控制程序,并提供一些代码示例。一、了解机器人的控制原理在开始开发机器人控制程序之前,首先需要了解机器人的控制原......