STM32 基本GPIO控制
目录
GPIO基础知识
编辑IO八种工作模式
固件库实现LED点灯
蜂鸣器
按键基础知识
编辑继电器
震动传感器
433M无线模块
GPIO基础知识
GPIO(General-Purpose input/output,通用输入/输出接口)
用于感知外部信号(输入模式)和控制外部设备(输出模式)
简单模块:LED,按键,蜂鸣器,温度传感器,使用一个GPIO就可以完成数据的传输/ 控制
复杂一点的模块OLED,FLASH,六轴传感器需要多个引脚组成“协议”传输数据, USART,IIC,SPI等协议
MCU单片机大都采用引脚复用模式也就是一个GPIO,可以直接控制它输出高低电平,也可以设置为某个协议的引脚之一。此外,一些MCU的引脚,还能设置为ADC模式读取模拟信号,或者设置为DAC模式输出模拟信号
系统架构
IO八种工作模式
引脚电平:0V~3.3V(数据1就是高电平就是3.3V,数据0就是低电平就是0V),部分引脚可忍受5V
STM32 IO工作模式
输出模式有四种:推挽输出,开漏输出,复用开漏,复用推挽
输入模式有四种:上拉输入,下拉输入,浮空输入,模拟输入
输出模式:
1.推挽输出(Push-Pull,pp)
让输出控制变成了VDD/VSS输出,使得输出电流增大 提高了输出引脚的驱动能力,提高了电路的负载能力和开关的动作速度
数据寄存器为1时,下管断开,上管导通,输出直接接到VDD,输出高电平
数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,输出低电平
2.开漏输出(Open-Drain,OD)
推挽输出模式可以直接输出高电平,开漏输出需要外接上拉电阻才能输出高电平(5v)
数据寄存器为1时,下管断开,上管断开,高阻模式
数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,输出低电平
这种模式下只有低电平有驱动能力,高电平是没有驱动能力的
可以作为通信协议的驱动方式,在多机通信的情况下,这个模式可以避免各个设备的相互干扰
开漏输出的特性
利用外部电路驱动能力
实现电平转换
方便实现“逻辑与” 功能
3.复用推挽/开漏输出(Alternate Funtion,AF)
GPIO除了作为通用输入输出引脚使用以外,还可以作为片上外设(USART,IIC,SPI) 专用引脚(和其他输出输入的区别),既可以利用片上外设输入也可以用来输出,即一个引脚可以有多种用途,但是同一时刻一个引脚只能使用复用功能中 的一个
当引脚设置为复用功能的时候,可选择推挽复用模式或者复用开漏模式,在设置为复用开 漏模式时,需要外接上拉电阻。
输入模式:
1.上拉输入(Input Pull-up)
如果接入上拉电阻,当引脚悬空时,还有上拉电阻来保证引脚的高电平
VDD经过开关、上拉电阻,连接外部I/O引脚。当开关闭合时,外部I/O输入信号时,默认 输入高电平。
2.下拉输入(Input Pull-down)
VSS经过开关,下拉电阻,连接外部I/O引脚,当开关闭合时,外部I/O无输入信号 时,默认输入低电平
3.浮空输入(Floating Input)
两个上下拉电阻开关均断开,没有上拉也没有下拉,I/O引脚直接连接TTL肖特基触发器(对输入电压进行整形,如果输入电压大于某一阈值,输出就会瞬间升为高电平,如果输入电压小于某一阈值,输出就会瞬间降为低电平 )
此时,I/O引脚浮空,读取的电平是不确定的,外部信号是什么电平,MCU引脚就输 入什么电平
MCU复位上电后,默认为浮空输入模式
4.模拟输入(Analoge mode)
两个上下拉电阻开关均断开,同事TTL肖特基触发器也断开,引脚信号直接连接模拟输入,实现对外部信号的采集。
在输入模式下输出是无效的,在输出模式下输入都是有效的,因为一个端口只能有一个输出,但可以有多个输入
当使用外设配置GPIO时可以参考手册给配置
固件库实现LED点灯
1.LED灯
LED灯,是一种能够将电能转化为可见光的半导体器件
原理:当给P极施加正向电压时,空穴和自由电子在P-N结复合,辐射出光子而发 光。
2.控制LED灯
LED灯的正极接到了3.3V,LED灯的负极接到了PA1,也就是GPIOA1引脚 只需要控制PA1为相对应的低电平,即可点亮对饮的LED灯,输出高电平则熄灭对应的LED 灯。
(在这种电路连接中,当 LED 灯的正极接到 3.3V 电源时,它为 LED 提供了正向的电压偏置,使得 LED 具备了导通发光的条件之一。而 LED 的负极连接到 PA1(GPIOA1 引脚),GPIOA1 引脚可以通过软件编程来控制其输出电平。
当 PA1 引脚输出低电平时,此时 LED 灯的正负极之间形成了足够的电压差(3.3V - 低电平电压,通常低电平电压接近 0V),有电流从 3.3V 电源经过 LED 流向 PA1 引脚,从而使 LED 灯导通发光。
当 PA1 引脚输出高电平时,假设高电平为 3.3V,那么 LED 灯正负极之间的电压差为 0(或非常小),无法满足 LED 导通所需的电压条件,LED 灯中没有电流通过,所以 LED 灯熄灭。
这种通过控制 GPIO 引脚电平来控制 LED 灯亮灭的方式是一种常见的数字逻辑控制方法,方便且易于通过软件进行灵活的控制和管理,广泛应用于各种电子设备和电路设计中。)
软件设计流程
初始化系统
初始化GPIO外设时钟
初始化LED引脚(对于单片机来说是输出)
(首先得定义这个变量才能用这个变量,用函数把它们装起来)
输出电平
首先在User中建立LED文件,LED:中新建led.h和led.c文件
从project中打开keil5,双击User将led.c添加进去,点击魔术棒led.h文件加进去,双击led.c文件输入#include "led.h",因为我们要用库函数要包含库函数头文件#include "stm32f10x.h"
1.初始化LED灯的函数(先将函数写进led.h文件中)命名函数时用驼峰命名发
1.1初始化LED引脚GPIOA1,要用初始化的GPIO结构体,通过配置结构体我们可以初始化引脚
先在FWLIB中找到giop.c文件再找到giop.h库在里面找到GIOP结构体GPIO_InitTypeDef,在led.c中重新定义GIOP结构体,在重新配置引脚,因为LED灯连接到板子上PA1所以引脚配置的是pin_1,要想LED灯点亮需要输出低电平,所以配置的模式是推挽输出
再从giop.c文件再找到giop.h中找到GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);函数,这个函数的作用是初始化GIOP的结构体,把上面函数真正初始化到结构体里面去,第一个参数是GPIOA,第二个参数是&led_initstruct(右键参数,上面是跳转定义.c,下面是跳转声明.h)
1.2初始化时钟APB2下的GPIOA
FWLIB中找到rcc.c文件再找到rcc.h找到RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);函数,第一个参数是APB2下的哪一个外设,第二个参数是枚举类型两种状态,失能和使能
最后总代码要做main文件中运行,在main文件中写入#include "led.h"就包含了上面的所有函数
在main函数中首先输入初始化LED灯的函数,然后让LED灯输出低电平
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_1);//这个函数是输出低电平
//右键查看函数声明,第一个参数是GPIOA,第二个参数引脚1
GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//这个函数是输出高电平
}
如何控制LED灯的闪烁? (亮一秒关一秒:延时)
//软件延时主要是让CPU“空转”,通过计算不同指令周期的时间,参考CPU主频大小,大概算出延时时间,这种方法从表面看起来就不精确,但它是比较好实现; void delay(uint16_t time)//延时1ms {uint16_t i = 0;while(time --){i - 12000;while(i --);}}
蜂鸣器
1.蜂鸣器的种类
蜂鸣器是一种常用的电子发声元器件,采用直流电压供电。广泛应用于计算机,打印 机,报警器,电子玩具,汽车电子设备灯等产品中常见的蜂鸣器可分为有源蜂鸣器和 无源蜂鸣器。
2.蜂鸣器的控制方式
有源蜂鸣器:内部有震荡源,只要通电即可自动发出固定频率的声音。(频率固定无 法控制音色)
无源蜂鸣器:内部无震荡源,需要外部脉冲信号驱动发声,声音频率可变。(可改变 频率来改变音色)
3.区分蜂鸣器
从外观上来看两种蜂鸣器形状相似,有源蜂鸣器底部有黑胶密封。
无源蜂鸣器底部可以看到电路板,两种蜂鸣器都标注有正负极。
GPIO控制蜂鸣器
VCC通过杜邦线接到板子3.3V,GND接到板子GND,I/O口接到普通单片机I/O口即可,当I/O口往蜂鸣器输出低电平时,蜂鸣器就会叫,如果输出高电平就会关掉
软件设计流程(和LED灯类似)
初始化系统
初始化GPIO外设时钟GPIOA
初始化蜂鸣器的引脚A3
输出电平控制蜂鸣器
初始化和LED灯一样
输出电平控制蜂鸣器
按键基础知识
GPIO的特点: 具有内部上拉或下拉的功能 可以使用外部下拉或上拉
按键连接示意图:
没按下开关的时候PC13和PA0都是没有连接外部电平的(默认电平),当按键按下的时候会出入GND低电平,所有我们可以判断如果检测PA0是低电平说明按键按下则我们控制灯亮,如果PC13引脚检测到的电平是低电平,我们就可以判断这个按键按下,则就把灯关掉
按键控制LED灯
软件设计流程
初始化系统
初始化GPIO时钟
初始化按键和LED引脚
检测按键输入电平来控制LED灯
SW2控制灯开(PA0)
SW3控制灯关(PC13)
初始化系统
检测按键输入电平来控制LED灯
继电器
1.继电器的工作原理
继电器是一个电控开关,工作原理基于电磁感应,继电器包括一个电磁线圈和一组触点。常用于控制高电流或高电压的电路,例如自动控制原理,电力系统和自动化设备中,由于可靠性和电气隔离的特性可以实现小电流实现大电流,继电器在各种应用中都有广泛的用途。
2.继电器的引脚说明
1.VCC(+):供电正极,连接此引脚到电源,以提供继电器所需的电流
2.GND(-): 地,连接此引脚到电源的负极或者地。
3.IN:控制输入信号,通常用于连接控制信号,当该信号变化,继电器切换状态。
(IN如果接了低电平,这个继电器是连接的状态(闭合)IN如果接了高电平,就是断开的状态)
IN不管是高电平还是低电平,控制的是NO端和NC端
4.COM(common):公共端,通常是中间的触点,与常开或常闭触点相连
5.NO(Normally Open):常开接口,继电器吸合前悬空,吸合后于COM连接
6.NC(Normally Closed):常闭接口,继电器吸合前与COM连接,吸合后悬空
(测试手中继电器是5v还是3.3v:首先用杜邦线连接VCC和GND另一端接到板子上的5V和GND此时红灯亮了,如果IN口接到低电平(3.3v高电平)绿灯会亮,说明继电器不是5V不是他的工作电压,再重新用杜邦线连接VCC和GND另一端接到板子上的3.3V和GND此时红灯亮了,如果IN口接到低电平绿灯会亮,再重新接到3.3v说明继电器是3.3V是他的工作电压,并且是低电平导通)
初始化系统
初始化继电器IN引脚对应的GPIO外设时钟
初始化继电器IN的引脚输出模式(IN获得低电平就打开,IN获得高电平就断开,所以IN连接单片机,单片机要输出引脚高或者低,所以是输出模式)
输出电平控制继电器开和关
输出电平控制继电器开和关
震动传感器
1.震动传感器工作原理
震动传感器黑色震动检测传感器,工作时电源LED灯常量(说明这个模块左右两边都有LED灯,
左边是电源指示灯,另外的信号灯只有在震动的瞬间才会亮),震动信号检测LED灯发生震动的
时候会
保持亮的过程。正常工作模块DO口输出高电平,震动瞬间DO口输出低电平,用于各种震动触发作
用,防盗报警,智能小车,电子积木灯等。
中间有个旋钮是控制震动传感器的灵敏度
2.震动传感器硬件引脚接线
1.VCC:接到板子电源的5V或者3.3V。
2.GND:地,连接到板子电源的负极或者GND.
3.DO: 数字信号输出口,可以与单片机相连检测环境是否发生震动。(如果这个震动传感器震动了,它就会把这个信号通过DO口发生给单片机,对于单片机来说它是输入的,所以再编程是要以输入IO的状态)
3震动传感器软件开发流程
初始化系统
初始化震动传感器DO相连的单片机引脚时钟
初始化震动传感器DO相连的单片机引脚输入配置
检测震动控制LED灯
#include "stm32f10x.h"
#include "shake.h"void Shake_Init()
{GPIO_InitTypeDef GPIOInitstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_0;GPIOInitstruct.GPIO_Mode = GPIO_Mode_IPD;
//上拉输入还是下拉输入都不影响,最终还是以输入电平为主
//配置上拉相当于 int a = 1,下拉相反GPIO_Init(GPIOA, &GPIOInitstruct);}
正常没有震动时输出高电平,有震动的时候输出低电平,如果DO口接受到低电平就控制板子上A1这个灯亮
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "relay.h"
#include "shake.h"void delay(uint16_t time){uint16_t i = 0;while(time --){i = 12000;while(i--);}}int main()
{Shake_Init();Led_Init();while(1){if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0)
//如果单片机引脚PA0接受到低电平(震动传感器震动),就会控制A1灯亮一秒灭一秒{ GPIO_ResetBits(GPIOA, GPIO_Pin_1);delay(1000);GPIO_SetBits(GPIOA, GPIO_Pin_1);delay(1000);}else
//如果没有接受到低电平,就会熄灭{GPIO_SetBits(GPIOA, GPIO_Pin_1);}}}
小项目:震动感应灯
继电器的作用是,如果开的情况下就会把COM和NO端连接在一起,就相当于LED灯直接和单片机的VCC相连接的,这时灯就会亮,如果是关的情况下COM和NO就不会连接在一起,LED灯就是灭的状态
如果震动器震动则控制继电器开 ,继电器开就表示COM和NO连接在一起,LED就会亮
#include "relay.h"
#include "stm32f10x.h"void Relay_Init()
{GPIO_InitTypeDef GPIOInitstruct;//初始化引脚的位置取决于IN引脚的接线,这时我们接到板子上PA0引脚
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_0;GPIOInitstruct.GPIO_Speed = GPIO_Speed_10MHz;GPIOInitstruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIOInitstruct);}
#include "stm32f10x.h"
#include "shake.h"void Shake_Init()
{GPIO_InitTypeDef GPIOInitstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_1;GPIOInitstruct.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(GPIOA, &GPIOInitstruct);}
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "relay.h"
#include "shake.h"void delay(uint16_t time){uint16_t i = 0;while(time --){i = 12000;while(i--);}}int main()
{Relay_Init();Shake_Init();GPIO_SetBits(GPIOA, GPIO_Pin_0);
//这个函数的作用是让我们每次上电时继电器先关上while(1){if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) == 0)//如果单片机从震动器得到低电平{
//则继电器亮一下,说明IN口得到低电平使继电器工作,COM和NO闭合使单片机上的低电平输出小灯,使小灯亮GPIO_ResetBits(GPIOA, GPIO_Pin_0);delay(1000);GPIO_SetBits(GPIOA, GPIO_Pin_0);delay(1000);}else{GPIO_SetBits(GPIOA, GPIO_Pin_0);} }}
433M无线模块
1.433M无线模块工作原理
数据发射模块的工作频率为315M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度
在-25~+85度之间变化时,频飘仅为3ppm。
接收到信号,接收模块对应针脚输出高电平,有D0 D1 D2 D3,可能对遥控器的A/B/C/D。
2.引脚接线
1.供电正极,连接此引脚到电源,以提供433M无线模块所需的电流
2.GND(-):地,连接此引脚到电源的负极或者地。
3.D0-D4:连接控制输入信号通常用于连接控制信号,当按键变换控制外设信号
3.433M控制灯软件开发流程
初始化系
初始化433M D0-D4引脚对应的GPIO外设时钟
初始化433M D0-D4引脚配置
433M按键控制外设
小项目:433M无线遥控灯 (一个按键控制灯开,一个按键控制灯关)
正常按下A按键,D0会输出高电平发送给A0,B按键按下,D1会输出高电平发送给A2,我们要实现D0按下灯开,D1按下灯关,板子是输入模式
首先要初始化A0和A2两个引脚,同时我们要控制板子上的LED灯 还要初始化A1的引脚
#include "stm32f10x.h"
#include "shake.h"void Shake_Init()
{GPIO_InitTypeDef GPIOInitstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2;
//这里同时初始化两个引脚GPIOInitstruct.GPIO_Mode = GPIO_Mode_IPD;
//板子是输入模式GPIO_Init(GPIOA, &GPIOInitstruct);}#include "led.h"
#include "stm32f10x.h"
void Led_Init()
{GPIO_InitTypeDef led_initstruct;led_initstruct.GPIO_Pin = GPIO_Pin_1;led_initstruct.GPIO_Speed = GPIO_Speed_2MHz;led_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &led_initstruct);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
}
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "relay.h"
#include "shake.h"int main()
{Shake_Init();Led_Init();while(1){if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1)//如果A0引脚检测到了高电平,说明按键A按下,无线模块接受到信号并输出给板子,要控制灯亮{GPIO_ResetBits(GPIOA,GPIO_Pin_1);//就输出低电平让灯亮}else if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == 1)//如果A2引脚检测到了高点哦,说明按键B按下,无线模块接受到信号并输出给板子,要控制灯灭{GPIO_SetBits(GPIOA,GPIO_Pin_1);//就输出高电平让灯灭}}}
相关文章:
STM32 基本GPIO控制
目录 GPIO基础知识 编辑IO八种工作模式 固件库实现LED点灯 蜂鸣器 按键基础知识 编辑继电器 震动传感器 433M无线模块 GPIO基础知识 GPIO(General-Purpose input/output,通用输入/输出接口) 用于感知外部信号(输入模式)和控制外部设备&…...
【天外之物】叉乘(向量积)的行列式表示方法
叉乘(向量积)的行列式表示方法如下: 步骤说明: 构造33矩阵: 将三维向量叉乘转换为行列式的形式,需构造一个包含单位向量 i , j , k \mathbf{i}, \mathbf{j}, \mathbf{k} i,j,k 和原向量分量的矩阵&#x…...
北京SMT贴片厂精密制造关键工艺
内容概要 随着电子设备小型化与功能集成化需求日益提升,北京SMT贴片厂在精密制造领域持续突破工艺瓶颈。本文以高密度PCB板贴片全流程为核心,系统梳理从锡膏印刷、元件贴装到回流焊接的关键技术节点,并结合自动化检测与缺陷预防方案…...
服务器架构:SMP、NUMA、MPP及Docker优化指南
文章目录 引言 一、服务器架构基础1. SMP(对称多处理,Symmetric Multiprocessing)2. NUMA(非统一内存访问,Non-Uniform Memory Access)3. MPP(大规模并行处理,Massively Parallel Pr…...
Datawhale春训营赛题分析和总结
1.Datawhale春训营任务一 借助这个云平台,支持类似于这个anaconda相关的交互式的操作,第一个任务就是跑通这个baseline,然后注册账号之后送了对应的相关算力,跑通这个之后需要进行打卡,跑通其实是没问题不大的&#x…...
一键模仿图片风格,图生生APP,实现随时随地“生图自由“
一、什么是"图片模仿"功能? "图片模仿"是图生生AI的功能之一,利用先进的AI技术,分析上传的图片风格、色调、构图等元素,快速生成具有相同风格的图片。无论是产品展示、广告海报还是社交媒体配图,…...
C++——C++11常用语法总结
C11标准由国际标准化组织(ISO)和国际电工委员会(IEC)旗下的C标准委员会(ISO/IEC JTC1/SC22/WG21)于2011年8月12日公布,并于2011年9月出版。2012年2月28日的国际标准草案(N3376)是最接近于C11标准…...
C++17 新特性简解
C17 新特性简解 一、核心语言特性 1. 结构化绑定(Structured Bindings) 用途:解构复合类型(如元组、结构体)为独立变量 示例: #include <iostream> #include <tuple>int main() {// 解构 st…...
【失败】Gnome将默认终端设置为 Kitty
起因 一会儿gnome-terminal一会儿kitty终端,实在是受不了,决定取缔默认的gnome-terminal。 过程 在 Ubuntu 或 Debian 系统上: 确保 Kitty 已经安装。如果未安装,可以在终端中运行命令sudo apt install kitty -y进行安装。 使用系…...
【Easylive】微服务架构在系统中的优缺点的具体体现
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 在线视频分享系统项目简介 系统概述 该项目是一个基于SpringCloud微服务架构的在线视频分享系统,主要功能包括: • 用户自主发布视频 • 后台视频审核 • 用户互动…...
锁(Mutex)、信号量(Semaphore)与条件量(Condition Variable)
一、同步机制的核心意义 在多线程/多进程编程中,当多个执行流共享资源(如变量、内存、文件)时,可能因操作顺序不确定导致数据竞争(Data Race)。同步机制的作用是: 保证原子性:确保…...
使用pnpm第一次运行项目报错 ERR_PNPM_NO_PKG_MANIFEST No package.json found in E:\
开始用unibestpnpm写一个小程序 运行pnpm init报错 如标题所示没有package.json这个文件 博主犯了一个很愚蠢的错误。。 准备方案手动创建一个json文件 此时才发现没到根目录下,创建了一个项目之后就没有切入文件夹里。 切入根目录再下载就成功啦...
前沿篇|CAN XL 与 TSN 深度解读
引言 1. CAN XL 标准演进与设计目标 2. CAN XL 物理层与帧格式详解 3. 时间敏感网络 (TSN) 关键技术解析 4. CAN XL + TSN 在自动驾驶领域的典型应用...
从零开始学A2A一:A2A 协议的高级应用与优化
A2A 协议的高级应用与优化 学习目标 掌握 A2A 高级功能 理解多用户支持机制掌握长期任务管理方法学习服务性能优化技巧 理解与 MCP 的差异 分析多智能体场景下的优势掌握不同场景的选择策略 第一部分:多用户支持机制 1. 用户隔离架构 #mermaid-svg-Awx5UVYtqOF…...
追赶地球变化的“快镜头“:遥感时间分辨率的奥秘
在地球表面,万物的生长、兴衰和变迁,如同一部永不停歇的电影。而科学家们想要看清每一帧画面,就必须依赖遥感卫星这个"超级摄影师"。今天,我们就来聊聊遥感领域里一个关键的维度——时间分辨率。 想象一下,如…...
轻量还是全量?Kubernetes ConfigMap 与专业配置中心的抉择
文章目录 简介什么是 ConfigMapConfigMap 的核心能力配置存储与注入动态更新与 Kubernetes 原生生态深度集成 ConfigMap 的固有局限专业配置中心对比选型建议结语 简介 在现代微服务架构中,集中式配置管理是保证应用可维护性、可扩展性和安全性的关键环节。Kuberne…...
mybatis plus打印sql日志到指定目录
1、mybatis plus打印sql日志 参考文档:mybatis plus打印sql日志_mybatisplus日志打印-CSDN博客 2、修改 修改InfoLevelLogger Override public void debug(String s) {// 修改这里logger.info(s);log.debug(s); } 增加:log.debug(s); 修改logback.x…...
CUDAfy的使用
此文章是对一篇使用文档的翻译总结 文档地址 https://www.doczj.com/doc/0f2570173.html CUDAfy使用步骤 1. 环境准备 硬件要求:支持CUDA的NVIDIA显卡(如GTX系列)。软件安装: 安装最新版NVIDIA驱动。下载并安…...
DeepSeek 部署中的常见问题及解决方案
DeepSeek(深度求索)大模型部署过程中常见问题的系统性解决方案,涵盖环境配置、模型加载、性能优化、安全防护及企业级部署等核心场景,结合官方文档与社区实践提供可落地的操作指南: 一、环境配置与依赖问题 1. 操作系统与硬件兼容性 问题表现:部署失败提示驱动不兼容或…...
【AI提示词】儿童看护员
提示说明 儿童看护员旨在帮助用户构建一个既专业又富有爱心的儿童看护员角色,以满足儿童在成长过程中的各种需求。 提示词 # 角色 儿童看护员## 注意 1. 儿童看护员应具备亲和力和耐心,以确保与儿童的良好互动。 2. 专家设计应关注儿童的安全、健康和…...
深入解析 Python 中的装饰器 —— 从基础到实战
1. 装饰器基础 1.1 什么是装饰器? 装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能。装饰器的返回值也是一个函数对象。 1.2 语法糖: 符号 Python 提供了 符号作为装饰器的语法糖,…...
学习海康VisionMaster之中线查找
一:进一步学习了 今天学习下VisionMaster中的中线查找,这个就是字面意思,输入两条直线,输出两条直线的中线 二:开始学习 1:什么是中线查找?今天这个比较简单,其实这个模块算是一个几…...
笔记整理五
STP生成树 stp生成树是用于解决二层环路问题的协议。 二层环路为有以下三种: 1.广播风暴 2.MAC地址的偏移(每一次循环,都会导致交换机来回刷新MAC地址表记录) 3.多帧复制 stp生成树:需要将原本的环型拓扑结构转换…...
js实现的前端水印
效果 var defaultConfig {content: [], // 水印内容数组fontSize: 14, // 字体大小(px)fontFamily: sans-serif, // 字体color: rgba(255, 255, 255,.3), // 字体颜色rotate: -20, // 旋转角度(度数)zIndex: 2147483647, // 层级globalAlpha: 0.5, // 透明度canvasWidth: 30…...
前端服务器部署报错记录
报错1:Refused to apply style from http://xxxxxxx.online/assets/index.DepkYCYv.css because its MIME type (text/plain) is not a supported stylesheet MIME type, and strict MIME checking is enabled. index-Dnq3oQAv.js:1 解释:浏览器期望加载…...
JAVA中多线程的经典案例
文章目录 一、线程安全的单例模式(一)饿汉模式(二)懒汉模式 二、阻塞队列(一)生产者消费者模型(二)阻塞队列(三)自定义阻塞队列 三、定时器(一&am…...
国产三维CAD皇冠CAD(CrownCAD)在「轨道交通行业」建模教程:轨道列车
在轨道交通行业,复杂系统集成、大规模装配验证与跨地域协同设计始终是核心痛点。传统设计工具难以应对动辄百万级零部件的装配挑战,且数据孤岛、版本混乱、硬件成本高昂等问题长期制约行业数字化转型。皇冠CAD(CrownCAD)作为国产云…...
Linux 日常运维命令大全
Linux 作为一种开源操作系统,在服务器运维中扮演着重要角色。掌握常用的 Linux 命令对于运维人员而言至关重要。本文将整理一份 Linux 服务器运维常用命令大全,帮助你在日常工作中提高效率和准确性。 1. 基础命令 基础命令是Linux操作的起点࿰…...
安全测试报告模板
安全测试报告 一、项目概况 项目名称XX智慧医疗平台被测系统版本V2.3.1测试类型渗透测试漏洞扫描测试时间2024年2月15-20日测试标准OWASP TOP 10 2021 二、测试环境 生产环境镜像: - 服务器:CentOS 7.9 Tomcat 9 - 数据库:MySQL 8.0集群…...
树莓派超全系列教程文档--(31)config.txt常用选项介绍
config.txt常用选项介绍 常用选项常用显示选项hdmi_enable_4kp60 常用硬件配置选项camera_auto_detectdisplay_auto_detectdtoverlaydtparamarm_boostpower_force_3v3_pwm 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 常用选项 常用显示选项 …...
算法-堆+单调栈
堆 首先堆在我们的Java中我们的是一个优先队列类 PriorityQueue 然后我们要弄最大堆和最小堆 最大堆: PriorityQueue<Integer> pq new PriorityQueue<Integer>((a, b) -> b - a); 最小堆: PriorityQueue<Integer> pq new P…...
Charles破解 激活码 Java
第一步,下载charles Download a Free Trial of Charles • Charles Web Debugging Proxy 第二部,生成key,这里使用的是java代码 import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Random;public class test {private static final int ROUNDS 12;p…...
线上蓝桥杯比赛环境配置
1.编译环境(以下是JAVA示例) Java软件开发编程环境 链接: https://pan.baidu.com/s/1JRNx0bkgHmPqQhANSFBNkQ 提取码: ftgw 下载对应的编译器和jdk以及对应的API文档 解压后把eclipse发送到桌面方便使用 2.录屏软件,我这边选择的是OBS St…...
民办生从零学C的第十一天:操作符
每日励志:我们可以随时的转身,但是决不能后退。 一.操作符的分类 算术操作符:、-、*、/、% 移位操作符:<<、>> 位操作符:&、|、^ 赋值操作符:、、-、*、/、%、<<、>>、&…...
疑难问题解决(2)
(1):在k230开发板中,ubuntu操作系统中的文件夹中的k230_sdk文件夹与canmv_k230文件夹的区别,以及 /home/ubuntu/canmv_k230/src/rtsmart/rtsmart/userapps/07_driver_hello 与 /home/ubuntu/k230_sdk/src/big/rt-smart…...
第六章 进阶04 尊重
本周周会给大家讲的议题是:尊重。 用“尊重”给周报文件冠名,周会中打开这个文件,就可以在标题中醒目地看到,加深了大家的印象、勾起了大家的好奇心。坚持长期事项的同时,偶尔也灵光一现给团队管理加入一些小插曲&…...
Android 12.0 framework实现对系统语言切换的功能实现
1.前言 在12.0的系统rom定制化开发过程中,在定制某些接口的过程中,需要通过系统提供接口,然后实现对系统语言的切换 功能实现,接下来分析下系统中关于系统语言切换的相关功能 2.framework实现对系统语言切换的功能实现的核心类 frameworks/base/core/java/android/app/IA…...
Origin LabTalk
之前用惯了matplotlib绘图,出于科研需要部分图用origin来画,但是还是想着要结合python来处理数据更加的方便,经过一番捣鼓发现origin自带有labtalk,并且还带有python的环境,真可谓是NB的很。 若能由程序代劳,何必亲手?…...
基于VS Code 为核心平台的python语言智能体开发平台搭建
以下是基于 VS Code 为核心平台,整合 Node-RED、Gradio、Docker Desktop 的智能体可视化开发平台优化方案,聚焦工具链深度集成与开发效率提升: 一、核心架构设计 #mermaid-svg-f8l9kYPAlJ2TlpGF {font-family:"trebuchet ms",verd…...
Python 创意:AI 图像生成
一、基于 Stable Diffusion 的本地创意创作 Stable Diffusion 是开源图像生成模型的代表,通过 Python 结合diffusers库,可实现本地图像生成。 1. 环境搭建 首先,安装必要的库: pip install diffusers transformers torch若使用 GPU 加速,需安装对应版本的 CUDA 和 cuD…...
vue3 传参 传入变量名
背景: 需求是:在vue框架中,接口传参我们需要穿“变量名”,而不是字符串 通俗点说法是:在网络接口请求的时候,要传属性名 效果展示: vue2核心代码: this[_keyParam] vue3核心代码&…...
Skipped breakpoint at ... because of stepping in another thread问题分析
在Java多线程应用程序的调试过程中,开发者可能会遇到“Skipped breakpoint at … because of stepping in another thread”这样的提示。这通常是因为调试器在处理多线程操作时,忽略了某个断点。本文将详细分析这一问题的原因,并提供有效的解…...
MATLAB脚本实现了一个转子系统的参数扫描和分岔分析
% 参数扫描范围 clc; clear; close all;S_values 500:200:20000; % 转速范围% 定义系统参数 N 5; % 质量点数量 num_nodes N; % 节点数 num_dofs_per_node 4; % 每个节点的自由度数 num_elements num_nodes-1; % 单元数 total_dofs num_nodes * num_dofs_per_node; % 总自…...
基于Flask的AI工具聚合平台技术解析
基于Flask的AI工具聚合平台技术解析 一、项目架构设计 本系统采用经典的三层架构模式,通过Mermaid架构图可清晰看到数据流向: 用户请求通过浏览器发送至Flask服务器路由系统解析请求路径模板引擎动态渲染页面静态资源提供样式支持独立数据模块实现内容…...
AUTOSAR图解==>AUTOSAR_SWS_CryptoInterface
AUTOSAR 加密接口(Crypto Interface)详解 基于AUTOSAR标准4.4.0的加密接口规范详细分析与图解 目录 概述 1.1 加密接口的作用与位置 1.2 主要术语解释架构设计 2.1 加密接口架构 2.2 组件关系内部结构 3.1 类结构 3.2 配置项运行流程 4.1 加密请求处理流程 4.2 同步与异步处理…...
GCD算法的学习
GCD算法的学习 学习了前辈wzx15927662183的文章GCD算法精讲-CSDN博客 介绍 GCD通常用来求两个数的最大公约数 算法的核心:gcd(a,b) gcd(b,a % b) 证明的思路: 证明 gcd(a, b) gcd(b, a % b) 的思路: 设 a > b 1. 构造 a % b : 设 …...
完美解决浏览器不能复制的问题(比如赛氪网的中题库练习题)
仅供复制题库题目进行打印学习使用! 最近想把赛氪网题库中的题目打印出来做练习,发现题库中的题目不能复制,不能在试卷上勾画标记太难受了,而且不能留作材料以后复习,故出此策。 而且CtrlP打印出的pdf会缺少题目。(我…...
Java 爬虫按关键字搜索淘宝商品:实现与优化
在电商领域,获取淘宝商品信息对于市场分析、价格监控和竞争情报等方面具有重要意义。Java 爬虫技术为我们提供了一种高效、自动化的方式来按关键字搜索淘宝商品。本文将详细介绍如何使用 Java 爬虫按关键字搜索淘宝商品,并提供完整的代码示例。 一、准备…...
build.gradle task copyJarToDesktop
build.gradle task copyJarToDesktop 构建完,拷贝jar包到指定文件夹AAA,例如:桌面,方便拉到宝塔发布 build.gradle plugins {id org.springframework.boot }jar {enabled false // 不生成 plain.jar }bootJar {archiveFileNa…...
Git合并分支的两种常用方式`git merge`和`git cherry-pick`
Git合并分支的两种常用方式git merge和git cherry-pick 写在前面1. git merge用途工作方式使用git命令方式合并使用idea工具方式合并 2. git cherry-pick用途工作方式使用git命令方式合并使用idea工具方式合并 3. 区别总结 写在前面 一般我们使用git合并分支常用的就是git mer…...