当前位置: 首页 > news >正文

【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块

一、温度传感器模块

(1)资源介绍

        🔅原理图

        蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2,所有拓展模块均可直接安装在 Lora 终端上使用;

图1        拓展接口

        温度传感器模块电路原理图如下所示:

图2        温度传感器模块电路原理图

        通过两张电路图连接可知,引脚资源配置情况为:

表1 引脚资源配置情况
TemperatureMCU
SCLPB6
SDAPB7
ALEPB0

        🔅STS30-DIS-B(以下资料来源于STS30-DIS-B数据手册)

        STS3x-DIS是盛思锐最新的高精度数字温度传感器。它依赖于业界成熟的CMOSens®技术,与其前身相比,提供更高的智能,可靠性和更高的精度规格。其功能包括增强的信号处理,两个独特的用户可选择的I2C地址和高达1 MHz的通信速度。DFN封装的占地面积为2.5 x 2.5 mm2,同时保持0.9 mm的高度。这允许将STS3x-DIS集成到各种各样的应用中。此外,2.15 V至5.5 V的宽电源电压范围保证了广泛应用的兼容性。总而言之,STS3x-DIS融合了盛思锐超过15年的数字传感器专业知识。

图3        STS30-DIS 功能框图

        🌙引脚分配

表2 STS30-DIS-B引脚分配
PinNameComments
1SDA串行数据;输入/输出
2ADDR

地址引脚;输入;连接到逻辑高或低,不要浮空

3ALERT指示警告状态;输出;如果不使用,必须保持浮空
4SCL串行时钟;输入/输出
5VDD电源电压;输入
6nRESET复位引脚,低电平有效;输入;如果不使用,建议保持浮空状态;可通过串联电阻R≥2kΩ与VDD连接
7R无电气功能;连接到VSS
8VSS接地

        🌙通信

        向传感器发送命令后,在传感器接收另一条命令之前,需要最小的等待时间为1ms

        所有STS30-DIS-B命令和数据都映射到16位地址空间。此外,数据和命令受到CRC校验和的保护。这提高了通信的可靠性。对传感器的16位命令已经包括3位CRC校验和。传感器发送和接收的数据总是经过一个8位的CRC校验。

  • 在写方向上,必须传输校验和因为STS30-DIS-B只接受后面跟着正确校验和的数据
  • 在读方向上,它留给主机来读取和处理校验和;

        🌙时钟拉伸Clock Stretching

  • 当没有时钟拉伸的命令发出时,如果没有数据存在,传感器响应一个带有不确认(NACK)的读报头;
  • 当发出带有时钟拉伸的命令时,传感器响应一个带有ACK的读报头,然后拉下SCL线。将SCL线拉下,直到测量完成。一旦测量完成,传感器释放SCL线并发送测量结果;

        🌙单次触发模式

图4        单次触发模式下的命令

由图4的流程图可知,单次触发模式的数据获取流程如下:

        1. 第一部分

图5        发送流程第一部分

🟠️伪代码如下:

I2C开始;
发送7位I2C地址+写命令位;
等待传感器发送ACK;
发送高8位命令;
等待传感器发送ACK;
发送低8位命令;
等待传感器发送ACK;
I2C结束;

        2. 第二部分

图6        发送流程第二部分

🟠️伪代码如下:

/* 时钟拉伸不使能 */
释放时钟线;(传感器测量中)
I2C开始;
发送7位I2C地址+读命令位;
等待传感器发送NACK;
I2C结束;
释放时钟线;(传感器测量中->传感器测量完成)
I2C开始;
发送7位I2C地址+读命令位;
等待传感器发送ACK;/* 时钟拉伸使能 */
释放时钟线;(传感器测量中)
I2C开始;
发送7位I2C地址+读命令位;
等待传感器发送ACK;
(传感器将时钟线拉低)

        3. 第三部分

图7        发送流程第三部分

🟠️伪代码如下:

接收高8位温度数据;
发送ACK;
接收低8位温度数据;
发送ACK;
接收CRC校验和;
发送NACK;
I2C结束;

        🌙温度数据转换

T\left [ ^{\circ}C \right ]=-45+175\cdot \frac{S_{T}}{2^{16}-1}

T\left [ ^{\circ}F \right ]=-49+315\cdot \frac{S_{T}}{2^{16}-1}

(2)STM32CubeMX 软件配置


🔅“工程建立、时钟树配置、Debug 串行线配置、代码生成配置” 在下文中有讲解,这里不再赘述❗️

【蓝桥杯——物联网设计与开发】基础模块1- GPIO输出icon-default.png?t=O83Ahttps://blog.csdn.net/m0_63116406/article/details/135604705?spm=1001.2014.3001.5502

1️⃣点击引脚 PB6 → 选择 GPIO_Output 模式(此处默认为推挽输出);

     点击引脚 PB7 → 选择 GPIO_Output 模式(此处配置为开漏输出);

图8        引脚配置



2️⃣初始化 OLED;(配置步骤在下文中有讲解,这里不再赘述);

【蓝桥杯——物联网设计与开发】基础模块6 - OLED_蓝桥杯物联网oled-CSDN博客


3️⃣生成代码即可;

(3)代码编写

🟢️main 函数

/* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV */
uint8_t H_VALUE, L_VALUE, CRC_VALUE;    // 高8位数据、低8位数据、CRC校验数据
float temp;                            // 温度数据
uint16_t ui_dat_temp;                    // 显示数据
uint8_t puc_oled[17];                    // OLED显示存储区
/* USER CODE END PV */
/*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_I2C3_Init();/* USER CODE BEGIN 2 */OLED_Init();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* 第一部分 */I2CStart2();I2CSendByte2(0x94);I2CWaitAck2();I2CSendByte2(0x24);I2CWaitAck2();I2CSendByte2(0x0B);I2CWaitAck2();I2CStop2();/* 第二部分 */HAL_Delay(2);I2CStart2();I2CSendByte2(0x95);I2CWaitAck2();I2CStop2();HAL_Delay(2);I2CStart2();I2CSendByte2(0x95);I2CWaitAck2();/* 第三部分 */H_VALUE = I2CReceiveByte2();I2CSendAck2();L_VALUE = I2CReceiveByte2();I2CSendAck2();CRC_VALUE = I2CReceiveByte2();I2CSendNotAck2();I2CStop2();if(CRC_VALUE){;}temp = ((H_VALUE << 8) | L_VALUE) * 175.0 / 65535 - 45;ui_dat_temp = (uint16_t)(Temp_Read() * 10);sprintf((char*)puc_oled, "   Temperature  ");OLED_ShowString(0, puc_oled);sprintf((char*)puc_oled, "      %.1f  ", ui_dat_temp / 10.0);OLED_ShowString(2, puc_oled);HAL_Delay(500);    //延时一会儿/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

(4)实验现象

        能够实时测量环境温度。


二、温度采集接口函数封装

🟡️软件i2c.c

#include "i2c_2.h"#define DELAY_TIME 20//I2C总线内部延时函数
static void delay1(unsigned int n)
{uint32_t i;for ( i = 0; i < n; ++i);
}//配置SDA引脚为输入模式
void SDA_Input_Mode2(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = SDA2;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
//配置SDA引脚为输出模式
void SDA_Output_Mode2(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = SDA2;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
//SDA引脚输出
void SDA_Output2(uint16_t val )
{if(val)GPIOB->BSRR |= SDA2;elseGPIOB->BRR |= SDA2;
}
//SCL引脚输出
void SCL_Output2( uint16_t val )
{if(val)GPIOB->BSRR |= SCL2;elseGPIOB->BRR |= SCL2;
}
//读取SDA引脚状态
uint8_t SDA_Input2(void)
{return HAL_GPIO_ReadPin(GPIOB, SDA2);
}//I2C总线启动信号
void I2CStart2(void)
{SDA_Output2(1);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);SDA_Output2(0);delay1(DELAY_TIME);SCL_Output2(0);delay1(DELAY_TIME);
}//I2C总线停止信号
void I2CStop2(void)
{SCL_Output2(0);delay1(DELAY_TIME);SDA_Output2(0);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);SDA_Output2(1);delay1(DELAY_TIME);}//等待应答
unsigned char I2CWaitAck2(void)
{unsigned short cErrTime = 5;SDA_Input_Mode2();delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);while(SDA_Input2()){cErrTime--;delay1(DELAY_TIME);if (0 == cErrTime){SDA_Output_Mode2();I2CStop2();return ERROR;}}SCL_Output2(0);SDA_Output_Mode2();delay1(DELAY_TIME);return SUCCESS;
}//发送应答
void I2CSendAck2(void)
{SDA_Output2(0);delay1(DELAY_TIME);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);SCL_Output2(0);delay1(DELAY_TIME);}//发送非应答
void I2CSendNotAck2(void)
{SDA_Output2(1);delay1(DELAY_TIME);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);SCL_Output2(0);delay1(DELAY_TIME);}//发送一个字节数据
void I2CSendByte2(unsigned char cSendByte)
{unsigned char  i = 8;while (i--){SCL_Output2(0);delay1(DELAY_TIME);SDA_Output2(cSendByte & 0x80);delay1(DELAY_TIME);cSendByte += cSendByte;delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);}SCL_Output2(0);delay1(DELAY_TIME);
}//接收一个字节数据
unsigned char I2CReceiveByte2(void)
{unsigned char i = 8;unsigned char cR_Byte = 0;SDA_Input_Mode2();while (i--){cR_Byte += cR_Byte;SCL_Output2(0);delay1(DELAY_TIME);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);cR_Byte |=  SDA_Input2();}SCL_Output2(0);delay1(DELAY_TIME);SDA_Output_Mode2();return cR_Byte;
}

🟡️软件i2c.h

#ifndef __I2C_2_H
#define __I2C_2_H#include "main.h"
//I2C总线引脚定义
#define SCL2	GPIO_PIN_6
#define SDA2	GPIO_PIN_7//接口函数
void I2CStart2(void);
void I2CStop2(void);
unsigned char I2CWaitAck2(void);
void I2CSendAck2(void);
void I2CSendNotAck2(void);
void I2CSendByte2(unsigned char cSendByte);
unsigned char I2CReceiveByte2(void);#endif

🟡️温度采集函数

/* 温度采集函数,中等可重复性+不使能时钟拉伸 */
float Temp_Read(void)
{uint8_t H_VALUE, L_VALUE, CRC_VALUE;float temp;I2CStart2();I2CSendByte2(0x94);I2CWaitAck2();I2CSendByte2(0x24);I2CWaitAck2();I2CSendByte2(0x0B);I2CWaitAck2();I2CStop2();HAL_Delay(2);I2CStart2();I2CSendByte2(0x95);I2CWaitAck2();I2CStop2();HAL_Delay(2);I2CStart2();I2CSendByte2(0x95);I2CWaitAck2();H_VALUE = I2CReceiveByte2();I2CSendAck2();L_VALUE = I2CReceiveByte2();I2CSendAck2();CRC_VALUE = I2CReceiveByte2();I2CSendNotAck2();I2CStop2();if(CRC_VALUE){;}temp = ((H_VALUE << 8) | L_VALUE) * 175.0 / 65535 - 45;return temp;
}

🔴温度采集接口函数调用实例

/* 采集任务函数 */
void Task_Colt(void)
{/* 200ms进入一次 */if(cnt_colt < 200)	return;cnt_colt = 0;/* 温度采集与转换 */ui_dat_temp = (uint16_t)(Temp_Read() * 10);
}

三、踩坑日记

(1)引脚配置问题

  1. 推荐使用软件模拟I2C(硬件I2C,在4ti测试出来有问题);
  2. PB7(SDA)配置为开漏输出、速度快;PB6(SCL)配置为推挽输出,速度快;

(2)底层驱动延时问题

        🔅注意编写底层驱动时存在两次HAL_Delay(2),释放时钟线作用,根据芯片手册说明,此处需要≥1ms;

(3)ALERT引脚

        🔅报警引脚Alert一般用于连接MCU的中断引脚。引脚的输出取决于可编程限制的温度读数值。当满足报警条件时,引脚拉高;

        🔅根据手册说明,不使用时必须保持浮空。

       

相关文章:

【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块

一、温度传感器模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2&#xff0c;所有拓展模块均可直接安装在 Lora 终端上使用&#xff1b; 图1 拓展接口 温度传感器模块电路原理图如下所示&#xff1a; 图2 …...

Zookeeper 底层原理解析

一、引言 在分布式系统的浩瀚星空中&#xff0c;Zookeeper 宛如一颗最为闪耀的导航星&#xff0c;为众多分布式应用指引方向、保驾护航。无论是大名鼎鼎的 Hadoop、HBase&#xff0c;还是其他各类复杂的分布式架构&#xff0c;Zookeeper 都扮演着不可或缺的关键角色。它如同一…...

面试题整理9----谈谈对k8s的理解1

谈谈对k8s的理解 1. Kubernetes 概念 1.1 Kubernetes是什么 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统&#xff0c;其服务、支持和工具的…...

PromptGIP:Unifying lmage Processing as Visual Prompting Question Answering

“Unifying Image Processing as Visual Prompting Question Answering” 文章提出了一种名为 PromptGIP 的通用模型&#xff0c;将图像处理任务统一为视觉提示问答范式&#xff0c;在多个图像处理任务上展现出良好性能&#xff0c;为通用图像处理提供了新的思路和方法。 confe…...

chart文件结构

在 Helm 中&#xff0c;Chart 是一个用于定义、安装和升级 Kubernetes 应用程序的包。Chart 文件结构遵循一定的目录和文件组织方式&#xff0c;以下是典型的 Helm Chart 文件结构&#xff1a; 1. Chart 文件结构示例 mychart/ ├── Chart.yaml # 描述 Chart 的基…...

SQL优化

SQL优化 插入数据 insert优化 批量插入 insert into tb_test 2values(1, Tom), (2, Cat), (3, jerry); 手动提交事务 start transaction; insert into test1 values(4, Tom), (5, Cat), (6, jerry); insert into test1 values(7, Tom), (8, Cat), (9, jerry); insert int…...

输出1-100之间的随机数,控制输出格式,每行10个(注释有详解)

C 随机数生成与格式化输出 在编程中&#xff0c;随机数的生成是一个常见的需求&#xff0c;尤其是在游戏开发、模拟实验和数据分析等领域。本文将通过一个简单的 C 程序来演示如何生成随机数并进行格式化输出。我们将逐步解析代码&#xff0c;并讨论其工作原理及应用场景。 代…...

【数字化】华为数字化转型架构蓝图-2

目录 1、客户联结的架构思路 1.1 ROADS体验设计 1.2 具体应用场景 1.3 统一的数据底座 1.4 案例与成效 2、一线作战平台的架构思路 2.1 核心要素 2.2 关键功能 2.3 实施路径 2.4 案例与成效 3、能力数字化的架构思路 3.1 能力数字化的核心目标 3.2 能力数字化的实…...

MyBatis是什么?为什么有全自动ORM框架还是MyBatis比较受欢迎?

MyBatis是什么&#xff1f; MyBatis是一个半自动的ORM持久层框架&#xff0c;内部封装了JDBC&#xff0c;mybatis是通过XML或注解的方式将需要执行的statement配置&#xff0c;支持定制化sql&#xff0c;存储过程以及高级映射。 解释 所谓的半自动ORM意思就是将JDBC的工作交…...

基础元器件的学习

1、二极管 1.1二极管的符号 ZD是稳压二极管 VD、V、D是普通二极管的符号。 1.2二极管的反向恢复时间 首先交流电为上正下负&#xff0c;然后下正上负。当二极管接到反向电压&#xff0c;二极管存在寄生电容&#xff0c;电压不能立刻突变&#xff0c;当输入频率变高时&#…...

GTID下复制问题和解决

环境介绍 数据库1主2从&#xff0c;mysql版本是v5.19 表结构 一、主库新增记录&#xff0c;从库提示主键冲突 模拟故障 1&#xff0c; master上关闭 sql_log_bin,删除id 103 后打开 2&#xff0c; 确认此时从库有id103,主库没有 3&#xff0c; master insert id103 主从异常…...

Linux 下的 GPT 和 MBR 分区表详解

文章目录 Linux 下的 GPT 和 MBR 分区表详解一、分区表的作用二、MBR&#xff08;Master Boot Record&#xff09;1. **特点**2. **优点**3. **缺点**4. **适用场景** 三、GPT&#xff08;GUID Partition Table&#xff09;1. **特点**2. **优点**3. **缺点**4. **适用场景** 四…...

mysql的事务控制和数据库的备份和恢复

事务控制语句 行锁和死锁 行锁 两个客户端同时对同一索引行进行操作 客户端1正常运行 客户端2想修改&#xff0c;被锁行 除非将事务提交才能继续运行 死锁 客户端1删除第5行 客户端2设置第1行为排他锁 客户端1删除行1被锁 客户端2更新行5被锁 如何避免死锁 mysql的备份和还…...

2014年IMO第4题

△ A B C \triangle ABC △ABC 中, B C BC BC 上有一点 P P P 满足 ∠ B A P = ∠ A C B \angle BAP=\angle ACB ∠BAP=∠ACB, 还有一点 Q Q Q 满足 ∠ A = Q A C = ∠ A B C \angle A=QAC=\angle ABC ∠A=QAC=∠ABC. 分别延长 A P AP AP, A Q AQ AQ 一倍至 M M M, N …...

如何实现层叠布局

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了GirdView Widget,本章回中将介绍Stack这种Widget,闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 在Flutter中Stack主要用来叠加显示其它的Widget,类似我们日常生活中的楼层或者说PS中的图层,因此它也是一…...

Qwen2.5-7B-Instruct Lora微调

Qwen2.5-7B-Instruct Lora 微调 本文简要介绍如何基于 transformers、peft 等框架&#xff0c;对 Qwen2.5-7B-Instruct 模型进行 Lora 微调。Lora 是一种高效微调方法。 环境配置 在完成基本环境配置和本地模型部署的情况下&#xff0c;你还需要安装一些第三方库&#xff0c…...

MacOS安装MySQL

官网下载MySQL 苹果芯片选择ARM版本 安装过程中会要求你输入root的密码&#xff08;不少于8位&#xff09;&#xff0c;这里设置为12345678 打开系统设置查看是否成功安装MySQL 配置MySQL环境变量 vi ~/.zshrc加入一行export PATH$PATH:/usr/local/mysql/bin 执行source ~/…...

基础库正则表达式

我们已经可以用requests 库来获取网页的源代码&#xff0c;得到 HTML 代码。但我们真正想要的数据是包含在 HTML代码之中的&#xff0c;要怎样才能从 HTML,代码中获取想要的信息呢?正则表达式就是其中一个有效的方法。 本篇博客我们将了解一下正则表达式的相关用法。正则表达…...

Matlab 和 R 语言的数组索引都是从 1 开始,并且是左闭右闭的

文章目录 一、前言二、主要内容三、小结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 在早期的计算机科学中&#xff0c;数组索引从 1 开始是很常见的。例如&#xff0c;Fortran 和 Pascal 等编程语言也采用了从 1 开始的索引。 这种索引…...

选择排序和冒泡排序;MySQL架构

1. 选择排序和冒泡排序 &#xff08;1&#xff09;选择排序 原理&#xff1a; 选择排序有升序和降序两种排序方法。升序排序的原理是&#xff1a;对于一个无序数列&#xff0c;先假定其中一个数为这个数列的最小值&#xff0c;然后让这个假定最小值和其他数依次比较&#xff0…...

蓝桥杯算法训练 黑色星期五

题目描述 有些西方人比较迷信&#xff0c;如果某个月的13号正好是星期五&#xff0c;他们就会觉得不太吉利&#xff0c;用古人的说法&#xff0c;就是“诸事不宜”。请你编写一个程序&#xff0c;统计出在某个特定的年份中&#xff0c;出现了多少次既是13号又是星期五的情形&am…...

Mybatis-Plus快速入门

参考&#xff1a;黑马MyBatisPlus教程全套视频教程&#xff0c;快速精通mybatisplus框架 1.Mapper-plus配置 1.MapperScan("Mapper目录的位置") 2.Mapper层文件需要继承BaseMapper extends BaseMapper<实体类> 3.开启日志 4.配置类 Configuration public cl…...

MySQL库的操作

目录 1. 创建数据库2. 创建数据库案例3. 认识系统编码以及字符集和校验规则4. 操纵数据库4.1 查看数据库4.2 显示创建语句4.3 修改数据库4.4 数据库的删除4.5 备份和恢复4.6 查看连接情况 1. 创建数据库 &#xff08;1&#xff09;语法&#xff1a; create database db_name;…...

JVM性能优化一:初识内存泄露-内存溢出-垃圾回收

本文主要是让你充分的认识到什么叫做内存泄露&#xff0c;什么叫做内存溢出&#xff0c;别再傻傻分不清了&#xff0c;别再动不动的升级服务器的内存了。 文章目录 1.基本概念1.1.内存泄露1.2.内存溢出1.3.垃圾回收1.4.内存泄露-垃圾回收-内存溢出三者的关系关系 2.代码示例2.…...

2024年山东省职业院校技能大赛网络建设与运维X86架构与ARM架构搭建赛题

完整赛题解析主页联系&#xff01; 一、X86架构计算机操作系统安装与管理 1.PC1 系统为 ubuntu-desktop-amd64 系统&#xff08;已安装&#xff0c;语言为英文&#xff09;&#xff0c;登录用户为 ubuntu&#xff0c;密码为Key-1122。配置ubuntu用户能免密使用sudo命令。 sud…...

flask_sqlalchemy event监听查询事件

flask_sqlalchemy event监听查询事件 在Flask-SQLAlchemy中&#xff0c;可以使用事件监听器来监控查询事件。这可以通过listens_for(ModelClass, “event_name”)装饰器来实现&#xff0c;其中ModelClass是你想要监控的模型类&#xff0c;event_name是你想要监控的事件名称&…...

解决vscode ssh远程连接服务器一直卡在下载 vscode server问题

目录 方法1&#xff1a;使用科学上网 方法2&#xff1a;手动下载 方法3 在使用vscode使用ssh远程连接服务器时&#xff0c;一直卡在下载"vscode 服务器"阶段&#xff0c;但MobaXterm可以正常连接服务器&#xff0c;大概率是网络问题&#xff0c;解决方法如下: 方…...

OpenAI发布全新AI模型 o3 与 o3-mini:推理与编码能力迎来重大突破. AGI 来临

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

Java --- 多线程

目录 前言&#xff1a; 一.线程的创建&#xff1a; 1.通过继承 Thread 类来创建线程&#xff1a; 2.通过Runnable接口创建线程&#xff1a; 3.通过Java8引入的lambda语法&#xff1a; 线程的优先级&#xff1a; 二.线程的生命周期&#xff1a; 三. 中断线程&#xff1a…...

医学图像 三维重建,原图与灰度图叠加,原图与多图叠加显示;多图像融合显示,彩色灰度图像融合

Part1: Summary 我们在做图像分割或融合时&#xff0c;有时需要显示多份数据进行叠加显示&#xff1b;可能需要这种效果&#xff1a; 四视图&#xff1a; 基于这个&#xff0c;我看一下网上的实现总结了一下&#xff1b;实现了以下几种效果&#xff1a; Part2&#xff1a;多种…...

Linux中的多线程

1.Linux线程概念 什么叫做线程? 我们认为&#xff0c;线程操作系统调度的基本单位&#xff01;重新理解进程? Linux内核观点&#xff1a;进程是承担分配系统资源的基本实体&#xff0c;即操作系统分配资源&#xff0c;是以进程为单位进行分配的。线程是进程内部的执行流资源…...

hive常用函数有哪些

Hive是一个基于Hadoop的数据仓库工具&#xff0c;它提供了类似于SQL的接口&#xff0c;用于数据查询和分析。Hive提供了许多内置函数&#xff0c;这些函数可以分为几种类型&#xff0c;包括&#xff1a; • 字符串函数&#xff1a;用于处理字符串数据。 • concat()&#xff1…...

深度学习试题及答案解析(二)

1. 神经风格转换中&#xff0c;优化算法的每次迭代更新的是什么&#xff1f; 神经风格转换&#xff08;Neural Style Transfer, NST&#xff09;是一种使用深度学习技术&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;&#xff0c;来将一幅图像的风格应用到另一幅图…...

【CSS in Depth 2 精译_089】15.2:CSS 过渡特效中的定时函数

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 15 章 过渡】 ✔️ 15.1 状态间的由此及彼15.2 定时函数 ✔️ 15.2.1 定制贝塞尔曲线 ✔️15.2.2 阶跃 ✔️ 15.3 非动画属性 文章目录 15.2 定时函数 Timing function…...

LINUX内核常用加锁

1、mutex互斥锁 互斥锁的实现主要利用到了原子变量可以锁内存总线的机制来对lock变量值进行原子修改&#xff0c;并通过在加锁及释放锁过程中引入内存屏障(加锁引入lfence&#xff0c;释放锁引入sfence)&#xff0c;来确保锁临界区资源(Critical Section)能够在不同的CPU之间可…...

【Select 语法全解密】.NET开源ORM框架 SqlSugar 系列

系列文章目录 &#x1f380;&#x1f380;&#x1f380; .NET开源 ORM 框架 SqlSugar 系列 &#x1f380;&#x1f380;&#x1f380; 文章目录 系列文章目录前言一、Select 执行位置二、返回一个字段和多个字段三、单表返回DTO四、多表返回DTO4.1 手动DTO4.2 实体自动映射14.…...

STM32之GPIO输出与输出

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 一.GPIO输入1.1GPIP简介1.2GPIO基本结构1.3GPIO位结构1.4GPIO的八种模式1.4.1浮空/上拉/下拉输入1.4.2 模拟输入1.4.3 推挽输出\开漏输出 二.GPIO输入2.1.按键介绍2.2传感器模块介绍2.3按键电路 一.G…...

【数据库】Redis—Java 客户端

一、常见的几种 Java 客户端 Jedis&#xff1a;以 Redis 命令作为方法的名称&#xff0c;便于学习&#xff0c;简单实用&#xff0c;但其实例是线程不安全的&#xff0c;多线程下需要基于连接池来使用。lettce&#xff1a;基于 Netty 实现&#xff0c;支持同步、异步和响应式编…...

《图解机器学习》(杉山将著)第一部分绪论学习笔记

《图解机器学习》&#xff08;杉山将著&#xff09;第一部分绪论学习笔记 《图解机器学习》&#xff08;杉山将著&#xff09;第一部分绪论学习笔记一、什么是机器学习1.1 学习的种类1.2 机器学习任务的例子1.3 机器学习的方法 二、学习模型2.1 线性模型2.2 核模型2.3 层级模型…...

Deepin和Windows传文件(Xftp,WinSCP)

在Linux系统和Windows系统传输文件&#xff0c;通常通过Windows系统中安装的Xftp和WinSCP访问Linux系统&#xff0c;在访问前需要安装配置SSH-Server 安装SSH-Server 安装SSH-Server sudo apt-get install openssh-server ssh -v 启动SSH服务 sudo systemctl start ssh //也…...

C语言习题2.0

C语言习题1.0 C语言习题-CSDN博客 目录 C语言习题1.0 C语言习题-CSDN博客 找一个数字的连续因子 求N个分数的和 正整数AB 函数 预处理 文件处理 操作符 找一个数字的连续因子 //找连续因子,及其个数 int main() {int a;scanf("%d", &a);int num 0; …...

达梦 本地编码:PG_GBK, 导入文件编码:PG_UTF8错误

问题 达梦 本地编码&#xff1a;PG_GBK, 导入文件编码&#xff1a;PG_UTF8错误 解决 右键管理服务器 查看配置 新建一个数据库实例&#xff0c;配置跟之前的保持一致 新建一个用户&#xff0c;跟以前的用户名一样 在用户上&#xff0c;右键导入&#xff0c;选择dmp的位置 导…...

【Apache Paimon】-- 11 -- Flink 消费 kakfa 写 S3 File

目录 1、项目构建 2、项目新增和修改 2.1 pom.xml 新增依赖 2.2 本地测试或者 flink on k8s 时,新增 S3FileSystemFactory.java 第一步:创建包=org.apache.flink.fs.s3hadoop 第二步:新增 java 类 S3FileSystemFactory 特别注意 (1)本地测试时需要新增以下内容 (…...

使用C语言编写UDP循环接收并打印消息的程序

使用C语言编写UDP循环接收并打印消息的程序 前提条件程序概述伪代码C语言实现编译和运行C改进之自由设定端口注意事项在本文中,我们将展示如何使用C语言编写一个简单的UDP服务器程序,该程序将循环接收来自指定端口的UDP消息,并将接收到的消息打印到控制台。我们将使用POSIX套…...

QT6静态编译并配置及错误解决

使用Github workflow进行编译&#xff0c;无需本地编译。 断断续续半年间&#xff0c;试了很多次静态编译&#xff0c;也尝试过别人编译的静态包&#xff0c;但一直失败。不是无法成功编译&#xff0c;就是编译后无法正常使用&#xff0c;经常报错链接失败。 参考的教程&#…...

Docker部署GitLab服务器

一、GitLab介绍 1.1 GitLab简介 GitLab 是一款基于 Git 的开源代码托管平台&#xff0c;集成了版本控制、代码审查、问题跟踪、持续集成与持续交付&#xff08;CI/CD&#xff09;等多种功能&#xff0c;旨在为团队提供一站式的项目管理解决方案。借助 GitLab&#xff0c;开发…...

flink实现复杂kafka数据读取

接上文&#xff1a;一文说清flink从编码到部署上线 环境说明&#xff1a;MySQL&#xff1a;5.7&#xff1b;flink&#xff1a;1.14.0&#xff1b;hadoop&#xff1a;3.0.0&#xff1b;操作系统&#xff1a;CentOS 7.6&#xff1b;JDK&#xff1a;1.8.0_401。 常见的文章中&…...

小雅Alist缓存太多怎么清理?教程来了

声明&#xff1a;不喜欢小白在开头唠嗑的小伙伴可以直接滑动到【 正文开始】处阅读。 前言 前段时间讲到在飞牛OS上部署小雅超集AList&#xff0c;后台看到很多小伙伴都部署了。 飞牛NAS上的小雅根本没有资源&#xff1f;只剩下打赏码&#xff1f;那得按照这个重新配置了&…...

Python字符串及正则表达式(十一):正则表达式、使用re模块实现正则表达式操作

前言&#xff1a;在 Python 编程的广阔天地中&#xff0c;字符串处理无疑是一项基础而关键的技能。正则表达式&#xff0c;作为处理字符串的强大工具&#xff0c;以其灵活的模式匹配能力&#xff0c;在文本搜索、数据清洗、格式验证等领域发挥着不可替代的作用。本系列博客已经…...

前端:金额高精度处理

Decimal 是什么 想必大家在用js 处理 数字的 加减乘除的时候&#xff0c;或许都有遇到过 精度不够 的问题&#xff0c;还有那些经典的面试题 0.20.1 ! 0.3&#xff0c; 至于原因&#xff0c;那就是 js 计算底层用的是 IEEE 754 &#xff0c;精度上有限制&#xff0c; 那么Deci…...