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,通用输入/输出接口) 用于感知外部信号(输入模式)和控制外部设备&…...
汽车免拆诊断案例 | 2019款大众途观L车鼓风机偶尔不工作
故障现象 一辆2019款大众途观L车,搭载DKV发动机和0DE双离合变速器,累计行驶里程约为8万km。车主进厂反映,鼓风机偶尔不工作。 故障诊断 接车后试车,鼓风机各挡位均工作正常。用故障检测仪检测,空调控制单元&#x…...
FastAPI与SQLAlchemy数据库集成
title: FastAPI与SQLAlchemy数据库集成 date: 2025/04/17 15:33:34 updated: 2025/04/17 15:33:34 author: cmdragon excerpt: FastAPI与SQLAlchemy的集成通过创建虚拟环境、安装依赖、配置数据库连接、定义数据模型和实现路由来完成。核心模块包括数据库引擎、会话工厂和声…...
免费将静态网站部署到服务器方法(仅支持HTML,CSS,JS)
原视频链接:把HTML免费部署到网站上,实现别人也能访问的教程来啦QAQ_哔哩哔哩_bilibili 注意:仅支持HTML、CSS、JS。不支持Vue等框架。 1.打开网站www.wordpress.org 点击红框按钮 点击红框按钮下载wordpress模板文件并解压。 将自己编写的…...
4.Rust+Axum Tower 中间件实战:从集成到自定义
摘要 深入探讨 Rust 中 Axum Tower 中间件生态系统,包含实用集成与自定义示例。 一、引言 在 Rust 的 Web 开发领域,Axum 是一个轻量级且功能强大的 Web 框架,而 Tower 中间件生态系统为 Axum 提供了丰富的扩展能力。中间件在 Web 应用中扮…...
51单片机实验一:点亮led灯
目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.用keil 软件创建工程,C文件编写程序,编译生成hex文件编辑 2.用STC烧写hex文件,点亮第一个LED灯 3.使用法2,点除第一个以外的LED灯 一、实验环境与实验器材 环境&am…...
PyCharm 开发工具 修改字体大小及使用滚轮没有反应
PyCharm 开发工具 修改字体大小及使用滚轮没有反应 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是PyCharm 开发工具。前后每一小节的内容是有学习/理解关联性,希望对您有用~ PyCharm 开发工具 修改字体大小…...
AndroidStudio编译报错 Duplicate class kotlin
具体的编译报错信息如下: Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21) D…...
zookeeper启动报错have small server identifier
解决方案: 1、查看myid是否有重复 2、查看server.X 与myid的X是否一致 3、启动顺序为myid从小到大的服务器顺序...
1.Framer Motion 中 motion/react 和 motion/react-client 的用法和区别
背景知识:服务器端渲染 (SSR) 和客户端渲染 (CSR) 在最新的 Motion for React(原 Framer Motion)12.x 及更高版本中,官方提供了两个入口模块:motion/react 和 motion/react-client。二者对外 API 完全一致,…...
Django 结合 Vue 实现简单管理系统的详解
以下是一个 Django 结合 Vue 实现简单管理系统的详细步骤及示例代码: 项目整体架构思路 后端:使用 Django 搭建 RESTful API,负责数据的存储和处理。前端:使用 Vue 构建用户界面,通过调用后端 API 实现数据的展示、添加、修改和删除等操作。步骤 1:创建 Django 项目和应…...
简易 Python 爬虫实现,10min可完成带效果源码
目录 准备工作 编写爬虫代码 运行爬虫 查看结果 遇到的问题及解决 总结 前言和效果 本文记录了使用 Python 实现一个简单网页爬虫的过程,目标是爬取 quotes.toscrape.com 的名言和作者,并将结果保存到文本文件。以下是完整步骤,包含环境…...
ArcPy工具箱制作(下)
在上一篇博客中,我们已经初步了解了如何制作ArcPy工具箱,包括工具箱的基本概念、准备工作、脚本编写以及将脚本转换为工具箱的步骤。今天,我们将继续深入探讨ArcPy工具箱的制作,重点介绍一些进阶技巧和优化方法. 一、优化工具箱的…...
492Q 型气缸盖双端面铣削组合铣床总体设计
一、引言 492Q 型气缸盖是发动机的重要组成部分,其双端面的加工精度对发动机的性能和可靠性有着重要影响。设计一款适用于 492Q 型气缸盖双端面铣削的组合铣床,能够提高加工效率和质量,满足发动机生产的需求。 二、总体设计要求 加工精度&…...
YOLO学习笔记 | YOLOv11的改进方向与应用领域
YOLOv11作为目标检测领域的前沿模型,其改进方向和应用领域在多个研究中得到了广泛探索。以下从改进策略和应用场景两个维度进行综合总结: 一、YOLOv11的改进方向 1. 骨干网络(Backbone)优化 Swin Transformer替换:通过引入层次化特征表示和移位窗口自注意力机制,解决了视…...
【学习笔记】Py网络爬虫学习记录(更新中)
目录 一、入门实践——爬取百度网页 二、网络基础知识 1、两种渲染方式 2、HTTP解析 三、Request入门 1、get方式 - 百度搜索/豆瓣电影排行 2、post方式 - 百度翻译 四、数据解析提取三种方式 1、re正则表达式解析 (1)常用元字符 ࿰…...
Python + Playwright:编写自动化测试的避坑策略
Python + Playwright:编写自动化测试的避坑策略 前言一、告别 `time.sleep()`,拥抱 Playwright 的智能等待二、选择健壮、面向用户的选择器,优先使用 `data-testid`三、严格管理环境与依赖,确保一致性四、分离测试数据与逻辑,灵活管理数据五、采用 POM 等设计模式,构建可…...
电脑开机启动慢的原因
硬件老化或故障 机械硬盘老化:电脑使用时间较长,机械硬盘的读写速度会逐渐下降。这是因为机械硬盘内部的盘片和磁头在长期使用后,可能会出现磨损、坏道等问题,导致数据读取速度变慢,从而影响开机时系统文件的加载速度&…...
旅游资源网站登录(jsp+ssm+mysql5.x)
旅游资源网站登录(jspssmmysql5.x) 旅游资源网站是一个为旅游爱好者提供全面服务的平台。网站登录界面简洁明了,用户可以选择以管理员或普通用户身份登录。成功登录后,用户可以访问个人中心,进行修改密码和个人信息管理。用户管理模块允许管…...
C语言链接数据库
目录 使用 yum 配置 mysqld 环境 查看 mysqld 服务的版本 创建 mysql 句柄 链接数据库 使用数据库 增加数据 修改数据 查询数据 获取查询结果的行数 获取查询结果的列数 获取查询结果的列名 获取查询结果所有数据 断开链接 C语言访问mysql数据库整体源码 通过…...
WiFi“管家”------hostapd的工作流程
目录 1. 启动与初始化 1.1 解析命令行参数 1.2 读取配置文件 1.3 创建接口和 BSS 数据结构 1.4 初始化驱动程序 2. 认证和关联处理 2.1 监听认证请求 2.2 处理认证请求 2.3 处理关联请求 3. 数据转发 3.1 接收客户端数据 3.2 转发数据 4. 断开连接处理 4.1 处理客…...
中间件--ClickHouse-9--MPP架构(分布式计算架构)
1、MPP 架构基础概念 MPP(Massively Parallel Processing 大规模并行处理) 是一种分布式计算架构,专门设计用来高效处理大规模数据集。在这种架构下*,数据库被分割成多个部分,每个部分可以在不同的服务器节点上并行处理*。这意味着ÿ…...
分布式计算领域的前沿工具:Ray、Kubeflow与Spark的对比与协同
在当今机器学习和大数据领域,分布式计算已成为解决大规模计算问题的关键技术。本文将深入探讨三种主流分布式计算框架——Ray、Kubeflow和Spark,分析它们各自的特点、应用场景以及如何结合它们的优势创建更强大的计算平台。 Spark批量清洗快,…...
每天学一个 Linux 命令(20):find
可访问网站查看,视觉品味拉满: http://www.616vip.cn/20/index.html find 是 Linux 系统中最强大的文件搜索工具之一,支持按名称、类型、时间、大小、权限等多种条件查找文件,并支持对搜索结果执行操作(如删除、复制、执行命令等)。掌握 find 可大幅提升文件管理效率…...
使用Service发布应用程序
使用Service发布应用程序 文章目录 使用Service发布应用程序[toc]一、什么是Service二、通过Endpoints理解Service的工作机制1.什么是Endpoints2.创建Service以验证Endpoints 三、Service的负载均衡机制四、Service的服务发现机制五、定义Service六、Service类型七、无头Servic…...
Winform发展历程
Windows Forms (WinForms) 发展历程 起源与背景(1998-2002) Windows Forms(简称WinForms)是微软公司推出的基于.NET Framework的GUI(图形用户界面)开发框架,于2002年随着.NET Framework 1.0的…...
【Hadoop入门】Hadoop生态之Flume简介
1 什么是Flume? Flume是Hadoop生态系统中的一个高可靠、高性能的日志收集、聚合和传输系统。它支持在系统中定制各类数据发送方(Source)、接收方(Sink)和数据收集器(Channel),从而能…...
npx 的作用以及延伸知识(.bin目录,npm run xx 执行)
文章目录 前言原理解析1. npx 的作用2. 为什么会有 node_modules/.bin/lerna3. npx 的查找顺序4. 执行流程总结1: 1. .bin 机制什么是 node_modules/.bin?例子 2. npx 的底层实现npx 是如何工作的?为什么推荐用 npx?npx 的特殊能力…...
本地部署DeepSeek-R1(Dify升级最新版本、新增插件功能、过滤推理思考过程)
下载最新版本Dify Dify1.0版本之前不支持插件功能,先升级DIfy 下载最新版本,目前1.0.1 Git地址:https://github.com/langgenius/dify/releases/tag/1.0.1 我这里下载到老版本同一个目录并解压 拷贝老数据 需先停用老版本Dify PS D:\D…...
【ubuntu】在Linux Yocto的基础上去适配Ubuntu的wifi模块
一、修改wifi的节点名 1.找到wifi模块的PID和VID ifconfig查看wifi模块网络节点的名字,发现是wlx44876393bb3a(wlxmac地址) 通过udevadm info -a /sys/class/net/wlx44876393bba路径的命令去查看wlx44876393bba的总线号,端口号…...
