Day02嵌入式---按键控灯
一、简单介绍
按键控制灯开关是一种常见的嵌入式系统示例项目,它通常用于演示嵌入式系统的基本控制能力。该项目由一个或多个LED和一个按键组成。通过按下按键,可以控制LED的开关状态,从而实现灯的亮灭控制。
二、查看功能手册
2.1 查看硬件引脚号码
这里我们使用STM32F40xxx这个板子来实现按键控制开关这个小项目
KEY0的引脚是PE4,KEY1的引脚是PE3。
可知 PE4:"PE"表示端口E,"4"表示该端口上的第4号引脚
PE3:"PE"表示端口E,"3"表示该端口上的第3号引脚
2.2查看硬件引脚号码对应的时钟型号
根据硬件引脚号码,KEY0和KEY1都是PE,那么控制他俩的时钟型号都是GPIOE,而根据上图可知,GPIOE在AHB1总线上,根据这个逻辑就能找到GPIOE时钟型号,并打开时钟信号。
AHB1ENR 寄存器用于配置 AHB1 总线上各个模块的时钟使能位。
2.3 确定输入模式
因为按键是一个输入外设,所以选择输入模式
2.4 确定输入类型
2.5确定输入速度
2.6 选择上拉模式
采用上拉模式,按键按下后,由高电平到低电平是一个下降沿。
三、使用现成函数来实现
3.1 确定时钟
由上述可知GPIOE由AHB1这个总线控制时钟信号
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
3.2GPIO结构体
3.3设置输入/输出模式
这里选择GPIO_Mode_IN输入模式
3.4选择输入类型
选择GPIO_PuPd_UP上拉输入
3.5选择引脚
选择3和4引脚
3.6 选择速度
选择高速GPIO_High_Speed。
综上所述,汇总如下
GPIO_InitTypeDef GPIO_InitTypeDefStruct2;
GPIO_InitTypeDefStruct2.GPIO_Mode=GPIO_Mode_IN;//选择输入模式
GPIO_InitTypeDefStruct2.GPIO_PuPd=GPIO_PuPd_UP;//选择上拉模式
GPIO_InitTypeDefStruct2.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4;//使用3号引脚和4号引脚
GPIO_InitTypeDefStruct2.GPIO_Speed= GPIO_High_Speed ;//选择高速
GPIO_Init(GPIOE,&GPIO_InitTypeDefStruct2);
四、实现功能
加上Day01的小灯的代码即可实现功能。
int main()
{Key_Init();LED_Init();int num=500000;LED1_OFF();LED2_OFF();while(1){if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0){while(num--){}num=50000;while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0){//GPIO_SetBits(GPIOF,GPIO_Pin_8);LED1_OFF();LED2_OFF();while(num--){}num=50000;}}if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0){while(num--){}num=50000;while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0){LED2_ON();while(num--){}num=50000;}}}
相关文章:

Day02嵌入式---按键控灯
一、简单介绍 按键控制灯开关是一种常见的嵌入式系统示例项目,它通常用于演示嵌入式系统的基本控制能力。该项目由一个或多个LED和一个按键组成。通过按下按键,可以控制LED的开关状态,从而实现灯的亮灭控制。 二、查看功能手册 2.1 查看硬件…...
Centos设置nginx开机自启动设置
Centos设置nginx开机自启动设置 要设置CentOS中的Nginx开机自启动,可以按照以下步骤进行操作: 首先,登录到CentOS服务器上,并以root用户或具有sudo权限的用户身份执行以下命令来安装Nginx(如果尚未安装)&a…...
拼接合并yuv序列转成mp4
ffmpeg需要用支持libx264的版本,如果需要,可以从这个网站下载编译支持libx264\x265的ffmpeg https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-6.1-essentials_build.7z #-*- coding:utf-8-*- import osif __name__ "__main__":# 1 输入…...

访谈 破风之人毛京波,选择难而正确的路
“无论是在燃油时代还是电动时代,我们所做的一切,只为回归纯粹的驾驶乐趣。”履新路特斯中国总裁整整一年的毛京波,从不放过任何一个展示路特斯品牌驾驭精神的机会。 11月17日,广州车展开幕首日,位于5.2馆的路特斯“冠…...
java实现一个简单的监听器
在 Java 中,我们可以通过实现监听器(Listener)模式来处理事件和回调。监听器模式是一种常见的设计模式,用于实现对象间的松耦合通信。本文将介绍如何在 Java 中实现一个简单的监听器。 步骤 以下是实现一个监听器的基本步骤&…...

用HALCON标定助手对相机进行标定
任务要求: 已知相机镜头焦距f为8mm,相机单个CCD像素在水平和竖直两个方向上的尺寸均为3.75微米,相机为普通透光镜头和面阵相机,对相机进行标定,测量相机的内外参数。 操作步骤: 1. 在HALCON中运行gen_ca…...

5 个适用于 Windows 的顶级免费数据恢复软件
对于计算机来说,最重要的是用户数据。除了您的数据之外,有关计算机的其他所有内容都是可替换的。这三个是数据丢失的最常见原因: 文件/文件夹删除丢失分区分区损坏 文件/文件夹删除 文件/文件夹删除是最常见的数据丢失类型。大多数时候&am…...

MySQL 批量插入记录报 Error 1390 (HY000)
文章目录 1.背景2.问题3.分批插入4.一次最多能插入多少条记录?5.什么是 Prepared Statement?参考文献 1.背景 Golang 后台服务使用 GORM 实现与 MySQL 的交互,在实现一个通过 Excel 导入数据的接口时,使用 Save 方法一次性插入大…...

线程池(用于处理Runnable任务或Callable任务)
一,线程池 二, 如何创建线程池 案例: //1,通过ThreadPoolExecuter创建一个线程池对象ExecutorService pool new ThreadPoolExecutor(3,5,8,TimeUnit.SECONDS,new LinkedBlockingQueue<>(4),Executors.defaultThreadFactory(),new Thr…...

MATLAB在信号系统中的应用
1.产生一个幅度为1, 基频为2Hz,占空比为50%的周期方波.要求画出图形。 在MATLAB中,函数square(w0*t, DUTY)产生基本频率为w0 (周期T2*pi/w0)、占空比DUTY (τ/T)*100的周期矩形波(方波),默认情况下占空比DUTY50。占空…...

Jenkins与Docker的自动化CI/CD流水线实践
Pipeline 有诸多优点,例如: 项目发布可视化,明确阶段,方便处理问题 一个Jenkins File文件管理整个项目生命周期 Jenkins File可以放到项目代码中版本管理 Jenkins管理界面 操作实例:Pipeline的简单使用 这里是比较…...

企业数字化转型的作用是什么?_光点科技
在当今快速变化的商业环境中,数字化转型已成为企业发展的重要策略。企业数字化转型指的是利用数字技术改造传统业务模式和管理方式,以提升效率、增强竞争力和创造新的增长机会。 提升运营效率:数字化转型通过引入自动化工具和智能系统&#x…...

css加载会造成阻塞吗??
前言 前几天面试问到了这个问题,当时这个答得不敢确定哈哈,虽然一面还是过了 现在再分析下这个,总结下,等下次遇到就能自信得回答,666 准备工作 为了完成本次测试,先来科普一下,如何利用chr…...
Java中的jvm——面试题+答案(JVM的高级概念和调优技巧,包括垃圾回收、内存分析、优化技术等)——第16期
涉及Java虚拟机(JVM)高级概念和调优技巧的面试题以及简要答案: 什么是JVM调优?有哪些常见的JVM调优参数? 答案: JVM调优是通过调整JVM的参数和配置,以提高Java应用程序的性能和稳定性。常见的JV…...
***Linux下Mysql的安装
以下是在Linux系统下安装MySQL的步骤: 1.访问MySQL官网下载页面(https://dev.mysql.com/downloads/mysql/),选择适合您Linux系统的版本进行下载。 2.下载完成后,解压缩文件并将其移动到/usr/local目录下:…...

Linux踩坑:arm下gcc编译添加 -Ox 优化后,程序无法正常运行
arm下gcc编译添加 -Ox 优化后,程序无法正常运行 一、问题描述 今天学习正点原子的阿尔法开发板裸机开发的时候,遇到了一个问题,在没有使用 -Ox 优化的时候,编译出来的程序能够正常运行,但是添加了-Ox之后,…...
Vue3中Composition API介绍
在Vue 3中,引入了Composition API,它是一种新的组合式函数API,用于更灵活地组织和重用组件逻辑。Composition API相比于Vue 2中的Options API,提供了更好的可组合性和代码复用性。下面是对Vue 3中Composition API的介绍和用法&…...
虚拟机系列:(VMware Workstation Pro)Centos7下搭建Android开发环境及Android真机调试
一、Android SDK 安装配置 1、环境 Linux系统为:Red Hat Enterprise Linux 7 64 位 ; 当然还需要Java环境,java 环境这里不叙述; 2、Android Studio 安装 (1)下载位置: http://www.android-studio.org/ 我这里下载的:android-studio-ide-191.5977832-linux.tar.gz …...

全面(16万字)深入探索深度学习:基础原理到经典模型网络的全面解析
前言 Stacking(堆叠) 网页调试 学习率:它决定了模型在每一次迭代中更新参数的幅度激活函数-更加详细 激活函数的意义: 激活函数主要是让模型具有非线性数据拟合的能力,也就是能够对非线性数据进行分割/建模 如果没有激活函数: 第一个隐层: l…...

openEuler Linux 部署 FineBi
openEuler Linux 部署 FineBi 部署环境 环境版本openEuler Linux22.03MySQL8.0.35JDK1.8FineBi6.0 环境准备 升级系统内核和软件 yum -y updatereboot安装常用工具软件 yum -y install vim tar net-tools 安装MySQL8 将 MySQL Yum 存储库添加到系统的存储库列表中 sudo…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...