STM32单片机入门学习——第8节: [3-4] 按键控制LED光敏传感器控制蜂鸣器
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!
本文写于:2025.04.02
STM32开发板学习——第8节: [3-4] 按键控制LED&光敏传感器控制蜂鸣器
- 前言
- 开发板说明
- 引用
- 解答和科普
- 一、按键控制LED
- 二、光敏模块控制蜂鸣器
- 问题
- 总结
前言
本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始32单片机的学习之路。
欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习32单片机了,就跟着B站上的江协科技开始学习了.
在这里会记录下江协科技32单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油!
另外为了增强我的学习效果:每次笔记把我不知道或者问题在后面提出来,再下一篇开头作为解答!
开发板说明
本人采用的是慧净的开发板,因为这个板子是我N年前就买的板子,索性就拿来用了。另外我也购买了江科大的学习套间。
原理图如下
1、开发板原理图
2、STM32F103C6和51对比
3、STM32F103C6核心板
视频中的都用这个开发板来实现,如果有资源就利用起来。另外也计划实现江协科技的套件。
下图是实物图
引用
【STM32入门教程-2023版 细致讲解 中文字幕】
还参考了下图中的书籍:
STM32库开发实战指南:基于STM32F103(第2版)
数据手册
解答和科普
一、按键控制LED
按键是第一种接法,按键接地表示按键按下为低电平,GPIO配置为上拉输入,LED分别接在在PA1和PA2两个口上,LED一端接GPIO口,另一端接VCC,就是低电平点亮的接法,都是随意的看自己的。
如果把这两部分驱动代码都混在主函数里面,代码就太乱了,不容易移植,所以对于这种驱动代码,我们要封装起来,单独放在另外的.c和.h文件里,这就是模块化编程的方式。
LED.C用来存放驱动程序的主体代码;
LED.h用来存放这个驱动可以对外提供的函数或变量的声明。
注意空行结尾
CTRL+alt+空格:代码提示
注意空行结尾
#include "stm32f10x.h" // Device headervoid LED_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1| GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);}void LED1_ON(void)
{GPIO_ResetBits(GPIOA,GPIO_Pin_1);}void LED1_OFF(void)
{GPIO_SetBits(GPIOA,GPIO_Pin_1);}
void LED2_ON(void)
{GPIO_ResetBits(GPIOA,GPIO_Pin_2);}void LED2_OFF(void)
{GPIO_SetBits(GPIOA,GPIO_Pin_2);}
也可以定义一个LEDset函数,然后定义两个参数,一个参数选择操作那个灯,另一个参数选择开还是关。
#ifndef __LED_H
#define __LED_Hvoid LED_Init(void);
void LED1_ON(void);
void LED1_OFF(void);
void LED2_ON(void);
void LED2_OFF(void);#endif
main.c
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "LED.h"int main(void)
{LED_Init();while(1){LED1_ON();Delay_ms(500);LED1_OFF();Delay_ms(500);}
}
实验现象
封装后控制LED闪烁





这样看来应该是地址,GPIOA
Key初始化:

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
1、GPIO_ReadInputDataBit读取这里输入数据寄存器的某一位;
2、GPIO_ReadOutputDataBit读取输出数据寄存器的某一位
3、GPIO_ReadInputData 读取整个输入数据寄存器
4、GPIO_ReadOutputData 读取整个输出数据寄存器
按键控制LED
K3控制LED1亮,K4控制LED1灭
1.main.c
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"uint8_t KeyNum; //作用域不同int main(void)
{//优先使用自己的局部变量LED_Init();Key_Init();while(1){KeyNum=Key_GetNum();if(KeyNum==1){LED1_ON();}if(KeyNum==2){LED1_OFF();}}
}
2.LED.C和LED.H
#include "stm32f10x.h" // Device headervoid LED_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1| GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);}void LED1_ON(void)
{GPIO_ResetBits(GPIOA,GPIO_Pin_1);}void LED1_OFF(void)
{GPIO_SetBits(GPIOA,GPIO_Pin_1);}
void LED2_ON(void)
{GPIO_ResetBits(GPIOA,GPIO_Pin_2);}void LED2_OFF(void)
{GPIO_SetBits(GPIOA,GPIO_Pin_2);}
#ifndef __LED_H
#define __LED_Hvoid LED_Init(void);
void LED1_ON(void);
void LED1_OFF(void);
void LED2_ON(void);
void LED2_OFF(void);#endif
3、Key.c和Key.h
#include "stm32f10x.h" // Device header
#include "Delay.h"void Key_Init(void)
{RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //读取按键选择上拉输入GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);}uint8_t Key_GetNum(void)
{uint8_t KeyNum =0;if (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==0);Delay_ms(20);KeyNum=1;}if (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)==0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)==0);Delay_ms(20);KeyNum=2;}return KeyNum;
}
#ifndef __KEY_H
#define __KEY_Hvoid Key_Init(void);
uint8_t Key_GetNum(void);#endif
实验现象
按键控制LED灯
按键控制LED状态取反
void LED1_Turn(void)
{if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_1)==0) //读取当前端口输出状态如果为0.就给它置1,否则为1,就置0{GPIO_SetBits(GPIOA,GPIO_Pin_1);}else{GPIO_ResetBits(GPIOA,GPIO_Pin_1);}}
void LED2_Turn(void)
{if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_2)==0) //读取当前端口输出状态如果为0.就给它置1,否则为1,就置0{GPIO_SetBits(GPIOA,GPIO_Pin_2);}else{GPIO_ResetBits(GPIOA,GPIO_Pin_2);}}
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"uint8_t KeyNum; //作用域不同int main(void)
{//优先使用自己的局部变量LED_Init();Key_Init();while(1){KeyNum=Key_GetNum();if(KeyNum==1){LED1_Turn();}if(KeyNum==2){LED2_Turn();}}
}
实验现象:
按键控制LED状态取反
二、光敏模块控制蜂鸣器
接线图
1.main
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"
#include "Buzzer.h"
#include "LightSensor.h"int main(void)
{Buzzer_Init();LightSensor_Init();while(1){if(LightSensor_Get()==1){Buzzer_ON();}else{Buzzer_OFF();}}
}
2、Buzzer.C和.H
#include "stm32f10x.h" // Device headervoid Buzzer_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_SetBits(GPIOB, GPIO_Pin_1 | GPIO_Pin_2);}void Buzzer_Turn(void)
{if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12)==0) //读取当前端口输出状态如果为0.就给它置1,否则为1,就置0{GPIO_SetBits(GPIOB,GPIO_Pin_12);}else{GPIO_ResetBits(GPIOB,GPIO_Pin_12);}}void Buzzer_ON(void)
{GPIO_ResetBits(GPIOB,GPIO_Pin_12);}void Buzzer_OFF(void)
{GPIO_SetBits(GPIOB,GPIO_Pin_12);}
#ifndef __BUZZER_H
#define __BUZZER_Hvoid Buzzer_Init(void);
void Buzzer_Turn(void);
void Buzzer_ON(void);
void Buzzer_OFF(void);#endif
3、LightSensor.C和.H
#include "stm32f10x.h" // Device headervoid LightSensor_Init(void)
{RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //读取按键选择上拉输入GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);
}uint8_t LightSensor_Get(void)
{return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13);}
#ifndef __LIGHT_SENSOR_H
#define __LIGHT_SENSOR_Hvoid LightSensor_Init(void);
uint8_t LightSensor_Get(void);
#endif
暂时没有实验现象
问题
1、怎么控制外接的AD模块
总结
本节课主要学习了GPIO的输入,首先是按键的控制LED灯,还有就是硬件的模块化,尽量把每个硬件的驱动函数单独提取出来,进行封装模块化编程;封装到.C.H文件中,在主函数完成更重要的。就是如何配置GPIO口为输入进行配置。
相关文章:
STM32单片机入门学习——第8节: [3-4] 按键控制LED光敏传感器控制蜂鸣器
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.02 STM32开发板学习——第8节: [3-4] 按键控制LED&光敏传感器控制蜂鸣器 前言开…...
Linux驱动入门——设备树详解
文章目录 一、设备树的引入与作用二、设备树的语法1. Devicetree格式1.1 DTS文件的格式1.2 node的格式1.3 properties的格式 2. dts文件包含dtsi文件3. 常用的属性3.1 #address-cells、#size-cells3.2 compatible3.3 model3.4 status3.5 reg 4. 常用的节点(node)4.1 根节点4.2 …...
Scala集合
Scala集合分为序列Seq、集Set、映射Map,都扩展自Iterable特质,且有可变和不可变版本。不可变集合操作后会返回新对象,可变集合则直接修改原对象。比如数组,不可变数组定义后大小不可变,修改会生成新数组;可…...
阿里云AI Studio 2.0:拖拽搭建企业级智能客服系统
一、平台能力全景 1.1 核心功能矩阵 模块子功能技术指标对话设计可视化流程编排支持50节点类型NLP引擎意图识别准确率行业TOP3(92.6%)知识管理多源数据接入15格式支持渠道对接全渠道覆盖8大平台SDK 1.2 企业级特性 关键优势: 日均对话承…...
java虚拟机---JVM
JVM JVM,也就是 Java 虚拟机,它最主要的作用就是对编译后的 Java 字节码文件逐行解释,翻译成机器码指令,并交给对应的操作系统去执行。 JVM 的其他特性有: JVM 可以自动管理内存,通过垃圾回收器回收不再…...
您的LarkXR专属顾问上线了!平行云官网新增 AI 小助手,手册同步升级!
遇到LarkXR技术问题?还在手动翻文档? Paraverse平行云官网双升级——AI小助手实时答疑 用户手册智能检索! 助您快速定位解决方案,效率全面提升! < 01 > AI 小助手—— 您的 LarkXR 智能顾问 欢迎我们的新成员…...
推导Bias² + Variance + σ²_ε
问题的背景 我们有一个真实函数 f ( x ) f(x) f(x) 和基于训练数据 D D D 训练得到的模型 f ^ ( x ; D ) \hat{f}(x;D) f^(x;D)。对于任意输入 x x x: y y y 是真实的观测值,定义为 y f ( x ) ϵ y f(x) \epsilon yf(x)ϵ,其中 …...
javaSE知识梳理(一)
一.面向对象编程 1.面向对象的基本元素:类(class)和对象 ①类的声明 语法格式: [修饰符] class 类名{属性声明;方法声明; } ②对象的创建(new) 语法格式: //方式1:给创建有名对象 类名 对象名 new 类名();//方式2࿱…...
k8s statefulset pod重启顺序
在 Kubernetes 中,StatefulSet 的 Pod 重启顺序由以下规则和机制决定: 1. StatefulSet 的核心设计原则 StatefulSet 旨在管理有状态应用,其核心特性包括: 稳定的唯一标识:Pod 名称格式为 <statefulset-name>-&…...
记录学习的第十九天
现在这篇是记录一下4.1的学习。今天还没开始。 这篇是关于简单的动态规划的题目,思路比较清晰类似。 在这里先说一下有关动态规划的四个步骤: 1.确定子问题 2.确定dp数组的递推关系(dp数组也叫子问题数组) 3.确定求解的计算顺序 4.空间优化(初学者可…...
【实用技巧】电脑重装后的Office下载和设置
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言下载设置总结互动致谢参考目录导航 前言 在数字化办公时代,Windows和…...
模拟集成电路设计与仿真 : Mismatch
前情提要 此為作者針對 mismatch ,進行資料統整,以便日後查詢原理 1. Mismatch (失配) random offset 靜態消除 : trimming動態消除 : auto zero ,choppingCMRRlinearity 理想差動對只有奇次諧波,沒有偶次諧波,但 mismatch 會引入殘存的偶次諧波PSRR2. Input Offset Volt…...
深度学习查漏补缺:4.数据分布的度量
一、数据分布差异的度量 1.KL散度(Kullback-Leibler Divergence) 什么是KL散度? KL散度是一种用来衡量两个概率分布之间差异的工具。你可以把它想象成一个“距离测量器”,但它不是传统意义上的距离(比如两点之…...
银河麒麟V10 aarch64架构安装mysql教程
国产操作系统 ky10.aarch64 因为是arm架构,故选择mysql8,推荐安装8.0.28版本 尝试8.0.30和8.0.41版本均未成功,原因不明☹️ 1. 准备工作 ⏬ 下载地址:https://downloads.mysql.com/archives/community/ 2. 清理历史环境 不用管…...
【NLP 52、多模态相关知识】
生活应该是美好而温柔的,你也是 —— 25.4.1 一、模态 modalities 常见: 文本、图像、音频、视频、表格数据等 罕见: 3D模型、图数据、气味、神经信号等 二、多模态 1、Input and output are of different modalities (eg: tex…...
[NCTF2019]Fake XML cookbook [XXE注入]
题目源代码 function doLogin(){var username $("#username").val();var password $("#password").val();if(username "" || password ""){alert("Please enter the username and password!");return;}var data "…...
I²C总线高级特性与故障处理分析
IC总线高级特性与故障处理深度分析 目录 1. IC基础回顾 1.1 IC通信基本原理1.2 IC总线时序与协议1.3 寻址方式与读写操作 2. IC高级特性 2.1 多主机模式2.2 时钟同步与伸展2.3 高速模式与Fast-mode Plus2.4 10位寻址扩展 3. IC总线故障与锁死 3.1 断电锁死原理3.2 总线挂起与…...
【力扣hot100题】(039)二叉树的直径
这题在简单题中有点难度,主要是不要把边数和深度搞混(我就这样)。 我想了很久,发现如果当前节点没有右节点,就将它的右长度设为0,左节点同理,并且在递归是不会加一,而是将加一的操作…...
L2-001 紧急救援
注意题目没有说边的数量,实际最多有5e5条边,开小了第四个样例会错!!! - 思路: Dijkstra 求最短路并且维护路径条数和最大人数。 #include<bits/stdc.h> using namespace std;typedef pair<int, int> pii…...
分组背包问题
与01背包的区别是,多了一个限制条件,将物品打包,每组物品只能用一个 #include <iostream> #include <algorithm>using namespace std;const int N 110;int v[N][N], w[N][N], s[N]; int f[N]; int n, m;int main() {cin >>…...
【工业场景】用YOLOv12实现饮料类别识别
饮料类别识别任务的意义在于帮助人们更快速地识别和区分不同类型的饮料,从而提高消费者的购物体验和满意度。对于商家而言,饮料类别识别可以帮助他们更好地管理库存、优化货架布局和预测销售趋势,从而提高运营效率和利润。此外,饮…...
宽带空时波束形成算法原理及MATLAB仿真
宽带阵列信号处理 空时波束形成、空时波束形成方向图 卫星导航空时抗干扰算法 MATLAB仿真 文章目录 前言一、空时波束形成结构二、空时波束形成方向图三、MATLAB仿真四、MATLAB源代码总结 前言 \;\;\;\;\; 空时波束形成(Space-Time Beamforming)是一种结…...
406. 根据身高重建队列
链接 406. 根据身高重建队列 - 力扣(LeetCode) 题目 思路 可能的一个思路是先对高的人进行处理,这样后面插入矮的人时不会影响高的人的位置。比如,如果先处理高个子,那么当插入一个矮个子的时候,前面的高…...
机器学习:人工智能的核心驱动力
近年来,机器学习(Machine Learning,简称ML)已成为人工智能(AI)领域的核心驱动力。它不仅广泛应用于图像识别、自然语言处理、医疗诊断等领域,还推动了自动驾驶、智能推荐系统等前沿技术的发展。…...
机器视觉中的传统视觉与深度视觉
工业视觉是现代制造业中一个非常重要的应用领域,广泛用于产品质量检测,尤其是在生产线上。几乎所有的工业产品在流入市场之前,都要经历严格的缺陷检测环节,以确保它们符合质量标准。而在这一过程中,工业视觉检测系统发…...
机器学习开发全流程详解:从数据到部署的完整指南
机器学习项目的成功不仅依赖算法选择,更在于系统化的开发流程。本文详细拆解各阶段的核心任务、工具及注意事项,并通过表格总结帮助开发者快速掌握关键要点。 1. 数据获取与准备 数据是机器学习的基础,需确保数据的质量与代表性。 关键任务…...
春晚魔术[蓝桥]
这里 考虑到N很大则快速幂无法处理,因为它并没有被取模 欧拉定理: 当是质数时 是质数 两边同时取mod, // // Created by yumo_ // #include<bits/stdc.h>using namespace std; #define scin std::cin #define scout std::cout using …...
CF580B Kefa and Company(滑动窗口)
题目描述 Sergei B., the young coach of Pokemons, has found the big house which consists of n flats ordered in a row from left to right. It is possible to enter each flat from the street. It is possible to go out from each flat. Also, each flat is connecte…...
多模态RAG实践:如何高效对齐不同模态的Embedding空间?
目录 多模态RAG实践:如何高效对齐不同模态的Embedding空间? 一、为什么需要对齐Embedding空间? 二、常见的对齐方法与关键技术点 (一)对比学习(Contrastive Learning) (二&#…...
linux 时钟
chronyc sourcestats 查看所有的源以及那个比较稳定 chronyc tracking 查看当前使用的是那个 ntpstat synchronised to NTP server (119.28.183.184) at stratum 3 time correct to within 57 ms polling server every 1024 s chronyc tracking | grep "Reference ID&quo…...
【leetcode100】每日温度
1、题目描述 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输…...
华为交换综合实验——VRRP、MSTP、Eth-trunk、NAT、DHCP等技术应用
一、实验拓扑 二、实验需求 1,内网Ip地址使用172.16.0.0/16分配 2,sw1和SW2之间互为备份 3, VRRP/STP/VLAN/Eth-trunk均使用 4,所有Pc均通过DHCP获取IP地址 5,ISP只能配置IP地址 6,所有电脑可以正常访问IsP路由器环回 三、需求分析 1、设备连接需求 二层交换机(LS…...
边缘检测技术现状初探2:多尺度与形态学方法
一、多尺度边缘检测方法 多尺度边缘检测通过在不同分辨率/平滑度下分析图像,实现: 粗尺度(大σ值):抑制噪声,提取主体轮廓细尺度(小σ值):保留细节,检测微观…...
【JavaScript】十四、轮播图
文章目录 实现一个轮播图,功能点包括: 自动播放鼠标经过暂时播放鼠标离开继续播放点击切换按钮手动切换 div盒子嵌套先写出静态HTML,再使用JS来修改样式和数据,渲染页面: <!DOCTYPE html> <html lang"…...
19信号和槽_信号和槽的基本概念
①Linux 信号 Signal 是系统内部的通知机制. 是进程间通信的方式 (给进程发信号kill命令,像情景内存泄漏,管道一端关闭另一端还是读,会给进程发信号) ②信号三要素 信号源: 谁发的信号 信号的类型: 哪种类别的信号 信…...
云端革命:数字文明的重构与新生
引言:算力大爆炸时代 2023年,当ChatGPT在全球掀起AI狂潮时,很少有人意识到,支撑这场智能革命的正是背后庞大的云计算基础设施。每天,全球云计算平台处理的数据量超过500EB,相当于5亿部高清电影;…...
论文阅读笔记:Denoising Diffusion Implicit Models (4)
0、快速访问 论文阅读笔记:Denoising Diffusion Implicit Models (1) 论文阅读笔记:Denoising Diffusion Implicit Models (2) 论文阅读笔记:Denoising Diffusion Implicit Models (…...
红帽Linux怎么重置密码
完整流程 ●重启操作系统,进入启动界面 ●然后按进入选择项界面 ●找到linux单词开头的那一行,然后移动到该行末尾(方向键移动或者使用键盘上的end),在末尾加入rd.break ●按ctrl x进入rd.break模式 ●在该模式下依次…...
关于存储的笔记
存储简介 名称适用场景常见运用网络环境备注块存储高性能、低延迟数据库局域网专业文件存储数据共享共享文件夹、非结构化数据局域网通用对象存储大数据、云存储网盘、网络媒体公网(断点续传、去重)海量 存储协议 名称协议块存储FC-SAN或IP-SAN承载的…...
java根据集合中对象的属性值大小生成排名
1:根据对象属性降序排列 public static <T extends Comparable<? super T>> LinkedHashMap<T, Integer> calculateRanking(List<ProductPerformanceInfoVO> dataList, Function<ProductPerformanceInfoVO, T> keyExtractor) {Linked…...
蓝桥杯嵌入式16届—— LED模块
使用主板 是STMG431RBT6 STMG431RBT6资源 资源配置表 跳线说明表 引脚状况 PC8~PC15分别对应着LD1~LD8 SN74HC573ADWR 是一种锁存器 当 LE(锁存使能)为高电平,输出 Q 实时跟随输入 D 的变化。当 LE 为低电平,输出锁定为最后…...
【IOS webview】源代码映射错误,页面卡住不动
报错场景 safari页面报源代码映射错误,页面卡住不动。 机型:IOS13 技术栈:react 其他IOS也会报错,但不影响页面显示。 debug webpack配置不要GENERATE_SOURCEMAP。 解决方法: GENERATE_SOURCEMAPfalse react-app…...
206. 反转链表 92. 反转链表 II 25. K 个一组翻转链表
leetcode Hot 100系列 文章目录 一、翻转链表二、反转链表 II三、K 个一组翻转链表总结 一、翻转链表 建立pre为空,建立cur为head,开始循环:先保存cur的next的值,再将cur的next置为pre,将pre前进到cur的位置…...
绘制动态甘特图(以流水车间调度为例)
import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np from matplotlib import cm# 中文字体配置(必须放在所有绘图语句之前) plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] Fa…...
生成式AI应用带来持续升级的网络安全风险
生成式AI应用带来持续升级的网络安全风险概要 根据Netskope最新研究,企业向生成式AI(GenAI)应用共享的数据量呈现爆炸式增长,一年内激增30倍。目前平均每家企业每月向AI工具传输的数据量已达7.7GB,较一年前的250MB实现…...
C++17更新内容汇总
C17 是 C14 的进一步改进版本,它引入了许多增强特性,优化了语法,并提升了编译期计算能力。以下是 C17 的主要更新内容: 1. 结构化绑定(Structured Bindings) 允许同时解构多个变量,从 std::tup…...
conda activate激活环境失败问题
出现 CondaError: Run conda init before conda activate 的错误,通常是因为 Conda 没有正确初始化当前的命令行环境。以下是解决方法: 1. 初始化 Conda 运行以下命令以初始化 Conda: conda init解释: conda init 会修改当前 S…...
TensorFlow实现逻辑回归
目录 前言TensorFlow实现逻辑回归 前言 实现逻辑回归的套路和实现线性回归差不多, 只不过逻辑回归的目标函数和损失函数不一样而已. TensorFlow实现逻辑回归 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import mak…...
第十四届蓝桥杯大赛软件赛省赛Python 大学 C 组:6.棋盘
题目1 棋盘 小蓝拥有 nn 大小的棋盘,一开始棋盘上全都是白子。 小蓝进行了 m 次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)。 请输出所有操作做完后棋盘上每个棋子的颜色。 输入格…...
电商场景下高稳定性数据接口的选型与实践
在电商系统开发中,API接口需要应对高并发请求、动态数据更新和复杂业务场景。我将重点解析电商场景对数据接口的特殊需求及选型方案。 一、电商API必备的四大核心能力 千万级商品数据实时同步 支持SKU基础信息/价格/库存多维度更新每日增量数据抓取与历史版本对比…...