驱动LSM6DS3TR-C实现高效运动检测与数据采集(2)----配置滤波器

news2024/12/27 12:21:34

工作模式

在LSM6DS3TR-C中,加速度计和陀螺仪可以独立地开启/关闭,并且可以拥有不同的ODR和功耗模式。
LSM6DS3TR-C有三种可用的操作模式:
● 仅加速度计活动,陀螺仪处于断电状态
● 仅陀螺仪活动,加速度计处于断电状态
● 加速度计和陀螺仪传感器同时活动,ODR独立

在这里插入图片描述
在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV19P411Q7fP/

驱动LSM6DS3TR-C实现高效运动检测与数据采集(1)----获取ID

样品申请

https://www.wjx.top/vm/OhcKxJk.aspx#

设置加速度速率

设置加速度速率可以配置CTRL1_XL (10h)寄存器,ODR_XL [3:0]可以设置速率。
在这里插入图片描述

参考例程序中对应的设置加速度速率程序函数,如下所示。

在这里插入图片描述
设置加速度速率代码如下所示。

#define LSM6DS3TRC_CTRL1_XL		0x10
//Linear acceleration out data rate
#define LSM6DS3TRC_ACC_RATE_0	0x00
#define LSM6DS3TRC_ACC_RATE_1HZ6	0xB0
#define LSM6DS3TRC_ACC_RATE_12HZ5	0x10
#define LSM6DS3TRC_ACC_RATE_26HZ	0x20
#define LSM6DS3TRC_ACC_RATE_52HZ	0x30
#define LSM6DS3TRC_ACC_RATE_104HZ	0x40
#define LSM6DS3TRC_ACC_RATE_208HZ	0x50
#define LSM6DS3TRC_ACC_RATE_416HZ	0x60
#define LSM6DS3TRC_ACC_RATE_833HZ	0x70
#define LSM6DS3TRC_ACC_RATE_1660HZ	0x80
#define LSM6DS3TRC_ACC_RATE_3330HZ	0x90
#define LSM6DS3TRC_ACC_RATE_6660HZ	0xA0
/***************************************************************************************************************
LSM6DS3TRC Set accelerometer data rate
****************************************************************************************************************/
void LSM6DS3TRC_Set_Accelerometer_Rate(uint8_t rate)
{
	uint8_t buf[1] = {0};
	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL1_XL, buf, 1);
	buf[0] |= rate;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL1_XL, buf, 1);
}

设置速率为12.5Hz的波形如下所示.
在这里插入图片描述

设置角速度速率

设置角速度速率可以配置CTRL2_G (11h))寄存器,ODR_G [3:0]可以设置速率。
在这里插入图片描述

参考例程序中对应的设置角速度速率程序函数,如下所示。
在这里插入图片描述
设置角速度速率代码如下所示。

#define LSM6DS3TRC_CTRL2_G		0x11
//Linear gyroscope out data rate
#define LSM6DS3TRC_GYR_RATE_0	0x00
#define LSM6DS3TRC_GYR_RATE_1HZ6	0xB0
#define LSM6DS3TRC_GYR_RATE_12HZ5	0x10
#define LSM6DS3TRC_GYR_RATE_26HZ	0x20
#define LSM6DS3TRC_GYR_RATE_52HZ	0x30
#define LSM6DS3TRC_GYR_RATE_104HZ	0x40
#define LSM6DS3TRC_GYR_RATE_208HZ	0x50
#define LSM6DS3TRC_GYR_RATE_416HZ	0x60
#define LSM6DS3TRC_GYR_RATE_833HZ	0x70
#define LSM6DS3TRC_GYR_RATE_1660HZ	0x80
#define LSM6DS3TRC_GYR_RATE_3330HZ	0x90
#define LSM6DS3TRC_GYR_RATE_6660HZ	0xA0
/***************************************************************************************************************
LSM6DS3TRC Set gyroscope data rate
****************************************************************************************************************/
void LSM6DS3TRC_Set_Gyroscope_Rate(uint8_t rate)
{
	uint8_t buf[1] = {0};
	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL2_G, buf, 1);
	buf[0] |= rate;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL2_G, buf, 1);
}

设置速率为12.5Hz的波形如下所示。
在这里插入图片描述

设置加速度量程选择

设置加速度量程可以配置CTRL1_XL (10h)寄存器的FS_XL,FS_XL [1:0]可以设置量程。
在这里插入图片描述
参考例程序中对应的设置加速度量程程序函数,如下所示。
在这里插入图片描述

#define LSM6DS3TRC_CTRL1_XL		0x10
//Accelerometer full-scale.
#define LSM6DS3TRC_ACC_FSXL_2G	0x00
#define LSM6DS3TRC_ACC_FSXL_16G	0x04
#define LSM6DS3TRC_ACC_FSXL_4G	0x08
#define LSM6DS3TRC_ACC_FSXL_8G	0x0C
/***************************************************************************************************************
LSM6DS3TRC Set accelerometer full-scale selection.
****************************************************************************************************************/
void LSM6DS3TRC_Set_Accelerometer_Fullscale(uint8_t value)
{
	uint8_t buf[1] = {0};
	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL1_XL, buf, 1);
	buf[0] |= value;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL1_XL, buf, 1);
}

设置速率为2g的波形如下所示。

在这里插入图片描述

设置角速度量程选择

设置角速度量程可以配置CTRL2_G (11h)寄存器的FS_G,FS_G [1:0]可以设置量程。
在这里插入图片描述
参考例程序中对应的设置角速度量程程序函数,如下所示。
在这里插入图片描述

#define LSM6DS3TRC_CTRL2_G		0x11
//Gyroscope full-scale.
#define LSM6DS3TRC_GYR_FSG_245	0x00
#define LSM6DS3TRC_GYR_FSG_500	0x04
#define LSM6DS3TRC_GYR_FSG_1000	0x08
#define LSM6DS3TRC_GYR_FSG_2000	0x0C
/***************************************************************************************************************
LSM6DS3TRC Set gyroscope full-scale selection.
****************************************************************************************************************/
void LSM6DS3TRC_Set_Gyroscope_Fullscale(uint8_t value)
{
	uint8_t buf[1] = {0};
	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL2_G, buf, 1);
	buf[0] |= value;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL2_G, buf, 1);
}

设置陀螺仪量程为2000的波形如下所示。

在这里插入图片描述

设置加速度参数

加速度带宽这个设置是用来确定加速度计数据的更新速度的。更高的带宽允许更高的频率信号通过,这意味着加速度计可以更快地响应运动的变化。
这个设置特别适用于加速度计的输出数据速率(ODR)大于或等于1.67kHz的情况。这是因为在这种高数据速率下,可能需要更宽的带宽来确保加速度计能够准确地测量快速变化的运动。例如,在高速运动的跟踪或者高精度的导航应用中,这个设置可能会很有用。

在这里插入图片描述

参考例程序中对应的设置加速度带宽选择程序函数,如下所示。
在这里插入图片描述

在这里插入图片描述

使用的函数如下。

#define LSM6DS3TR_C_XL_ANA_BW_400Hz  1
#define LSM6DS3TR_C_XL_LOW_NOISE_LP_ODR_DIV_100   0x11
/* Configure filtering chain(No aux interface) */
  /* Accelerometer - analog filter */
  lsm6ds3tr_c_xl_filter_analog_set(&dev_ctx,
                                   LSM6DS3TR_C_XL_ANA_BW_400Hz);
  /* Accelerometer - LPF1 path ( LPF2 not used )*/
  //lsm6ds3tr_c_xl_lp1_bandwidth_set(&dev_ctx, LSM6DS3TR_C_XL_LP1_ODR_DIV_4);
  /* Accelerometer - LPF1 + LPF2 path */
  lsm6ds3tr_c_xl_lp2_bandwidth_set(&dev_ctx,
                                   LSM6DS3TR_C_XL_LOW_NOISE_LP_ODR_DIV_100);

对于CTRL1_XL (10h)配置,主要有如下1个函数。
bw0_xl写入1,通过在CTRL1_XL寄存器中将BW0_XL位设置为1来将模拟滤波器的带宽设置为400 Hz。

 ctrl1_xl.bw0_xl = (uint8_t) val;

对于CTRL8_XL(17h)配置,主要有如下4个函数。
((uint8_t) val & 0x10U) >> 4为(0x11 & 0x10)>> 4即ctrl8_xl.input_composite写入1;
ctrl8_xl.hpcf_xl = (uint8_t) val & 0x03U为(0x11 & 0x03)即ctrl8_xl.hpcf_xl写入1;
ctrl8_xl.lpf2_xl_en = 1即lpf2_xl_en写入1;
ctrl8_xl.hp_slope_xl_en = 0即hp_slope_xl_en写入0;

ctrl8_xl.input_composite = ((uint8_t) val & 0x10U) >> 4;
    ctrl8_xl.hpcf_xl = (uint8_t) val & 0x03U;
    ctrl8_xl.lpf2_xl_en = 1;
    ctrl8_xl.hp_slope_xl_en = 0;

线性加速度滤波器寄存器在CTRL8_XL (17h)中,这些参数在CTRL8_XL寄存器中定义了加速度计的一些滤波器设置。以下是这些参数的区别:
LPF2_XL_EN - 加速度计低通滤波器LPF2的选择。
HPCF_XL[1:0] - 加速度计LPF2和高通滤波器的配置和截止设置。
HP_REF_MODE - 启用高通滤波器参考模式。默认值:0(0:禁用;1:启用(1))。启用后,必须丢弃第一个输出数据。
INPUT_COMPOSITE - 复合滤波器输入选择。默认值:0(0:将ODR/2低通滤波器输出发送到复合滤波器(默认);1:将ODR/4低通滤波器输出发送到复合滤波器)。
HP_SLOPE_XL_EN - 加速度计斜率滤波器/高通滤波器选择。
LOW_PASS_ON_6D - 6D功能上的LPF2选择。
降低采样率可以减少传感器生成的数据量,从而降低功耗和数据处理要求。这在某些应用场景中可能是有用的,特别是对于要求较低的数据更新率或对存储和传输资源有限的情况下。

在这里插入图片描述
模拟滤波器带宽的设置:
当加速度计的采样率(ODR)大于等于1666 Hz时,可以通过在CTRL1_XL寄存器中将BW0_XL位设置为1来将模拟滤波器的带宽设置为400 Hz。
数字低通滤波器LPF1的选择:
LPF1数字低通滤波器提供两个输出,它们具有不同的截止频率。可以通过在CTRL1_XL寄存器的LPF1_BW_SEL位和CTRL8_XL寄存器的INPUT_COMPOSITE位来选择所需的LPF1输出。这些位的设置将确定LPF1输出的截止频率。

在这里插入图片描述
配置CTRL8_XL (17h)为LSM6DS3TRC_ACC_LOW_PASS_ODR_100 0xA8(1010 1000),流程图如下所示。

在这里插入图片描述

#define LSM6DS3TRC_CTRL1_XL		0x10
#define LSM6DS3TRC_CTRL8_XL		0x17
//Accelerometer analog chain bandwidth
#define LSM6DS3TRC_ACC_BW0XL_1500HZ	0x00
#define LSM6DS3TRC_ACC_BW0XL_400HZ	0x01
//Accelerometer bandwidth selection
#define LSM6DS3TRC_ACC_LOW_PASS_ODR_50	0x88
#define LSM6DS3TRC_ACC_LOW_PASS_ODR_100	0xA8
#define LSM6DS3TRC_ACC_LOW_PASS_ODR_9	0xC8
#define LSM6DS3TRC_ACC_LOW_PASS_ODR_400	0xE8
/***************************************************************************************************************
LSM6DS3TRC Set accelerometer analog chain bandwidth.
****************************************************************************************************************/
void LSM6DS3TRC_Set_Accelerometer_Bandwidth(uint8_t BW0XL, uint8_t ODR)
{
	uint8_t buf[1] = {0};
	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL1_XL, buf, 1);
	buf[0] |= BW0XL;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL1_XL, buf, 1);

	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL8_XL, buf, 1);
	buf[0] |= ODR;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL8_XL, buf, 1);
}

设置加速度的刷新速度为400Hz和高通滤波器的截止频率被设置为加速度计的输出数据速率的百分之一的波形如下所示。

在这里插入图片描述

陀螺仪带宽配置

陀螺仪的带宽 在LSM6DS3TR-C器件中,陀螺仪滤波链取决于所使用的连接方式。
陀螺仪滤波链配置如下图所示。陀螺仪数字链)。这是一个三级的级联滤波器:一个可选数字高通滤波器(HPF),一个可选数字低通滤波器(LPF1)和一个数字低通 过滤器(LPF2)。
在这里插入图片描述
参考程序配置陀螺仪带宽代码如下所示。
在这里插入图片描述
使用的函数如下。

 #define LSM6DS3TR_C_HP_260mHz_LP1_STRONG   0xA8
/* Gyroscope - filtering chain */
  lsm6ds3tr_c_gy_band_pass_set(&dev_ctx,
                               LSM6DS3TR_C_HP_260mHz_LP1_STRONG);

对于CTRL7_G (16h)配置,主要有如下2个函数。
((uint8_t)val & 0x30U) >> 4为(0xA8 & 0x30)>> 4即ctrl7_g.hpm_g写入10;
((uint8_t)val & 0x80U) >> 7为(0xA8 & 0x80)>> 7即ctrl7_g.hp_en_g写入1;

    ctrl7_g.hpm_g  = ((uint8_t)val & 0x30U) >> 4;
    ctrl7_g.hp_en_g = ((uint8_t)val & 0x80U) >> 7;

对于CTRL6_G (15h)配置,主要有如下1个函数。
(uint8_t)val & 0x03U为(0xA8 & 0x03)即ctrl6_c.ftype写入00。

	ctrl6_c.ftype = (uint8_t)val & 0x03U;

对于CTRL4_G (13h)配置,主要有如下1个函数。
((uint8_t)val & 0x08U) >> 3为(0xA8 & 0x08)>> 3即ctrl4_c.lpf1_sel_g写入1。

ctrl4_c.lpf1_sel_g = ((uint8_t)val & 0x08U) >> 3;

设置角速度控制寄存器可以配置CTRL7_G (16h),通过将CTRL7_G寄存器的HP_EN_G位设置为1,可以使能数字HP滤波器。同时G_HM_MODE默认情况下为0,即开启高性能模式。
数字高压滤波器截止频率可以通过CTRL7_G寄存器的HPM_G[1:0]字段来选择,如下表所示,这里选择配置为10,即260mHz。

在这里插入图片描述

//CTRL7_G register
#define LSM6DS3TRC_CTRL7_G_HM_MODE_ENABLE		0x00
#define LSM6DS3TRC_CTRL7_G_HM_MODE_DISABLE	0x80
#define LSM6DS3TRC_CTRL7_G_HP_EN_DISABLE		0x00
#define LSM6DS3TRC_CTRL7_G_HP_EN_ENABLE		0x40
#define LSM6DS3TRC_CTRL7_G_HPM_16MHZ	0x00
#define LSM6DS3TRC_CTRL7_G_HPM_65MHZ	0x10
#define LSM6DS3TRC_CTRL7_G_HPM_260MHZ	0x20
#define LSM6DS3TRC_CTRL7_G_HPM_1HZ04	0x30
#define LSM6DS3TRC_CTRL7_G_ROUNDING_STATUS_DISABLE	0x04
#define LSM6DS3TRC_CTRL7_G_ROUNDING_STATUS_ENABLE	0x00
/***************************************************************************************************************
LSM6DS3TRC Set register 7
****************************************************************************************************************/
void LSM6DS3TRC_Set_Register7(uint8_t reg7)
{
	uint8_t buf[1] = {0};

	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL7_G, buf, 1);
	buf[0] |= reg7;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL7_G, buf, 1);
}

这里关闭高性能操作模式以及打开陀螺仪数字HP滤波器,截止频率选择260 mHz的波形如下所示。

#define LSM6DS3TRC_CTRL7_G_HP_EN_ENABLE		0x40
#define LSM6DS3TRC_CTRL7_G_HPM_260MHZ	0x20
LSM6DS3TRC_Set_Register7(LSM6DS3TRC_CTRL7_G_HP_EN_ENABLE | LSM6DS3TRC_CTRL7_G_HPM_260MHZ);

在这里插入图片描述
CTRL6_C寄存器主要用于配置陀螺仪的低通滤波器(LPF1)的带宽选择。通过修改FTYPE[1:0]的值,您可以选择不同的陀螺仪低通滤波器带宽。
FTYPE[1:0] - 陀螺仪的低通滤波器 (LPF1) 带宽选择。表68显示了可选的带宽值。

在这里插入图片描述

#define LSM6DS3TRC_CTRL6_C		0x15
//CTRL6_C register
#define LSM6DS3TRC_CTRL6_C_EDGE_TRIGGER	0x80
#define LSM6DS3TRC_CTRL6_C_LEVEL_TRIGGER	0x40
#define LSM6DS3TRC_CTRL6_C_LEVEL_LATCHED	0x60
#define LSM6DS3TRC_CTRL6_C_LEVEL_FIFO	0xC0
#define LSM6DS3TRC_CTRL6_C_XL_HM_MODE_ENABLE	0x00
#define LSM6DS3TRC_CTRL6_C_XL_HM_MODE_DISABLE	0x10
#define LSM6DS3TRC_CTRL6_C_FTYPE_1	0x00
#define LSM6DS3TRC_CTRL6_C_FTYPE_2	0x01
#define LSM6DS3TRC_CTRL6_C_FTYPE_3	0x02
#define LSM6DS3TRC_CTRL6_C_FTYPE_4	0x03
/***************************************************************************************************************
LSM6DS3TRC Set register 6
****************************************************************************************************************/
void LSM6DS3TRC_Set_Register6(uint8_t reg6)
{
	uint8_t buf[1] = {0};
	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL6_C, buf, 1);
	buf[0] |= reg6;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL6_C, buf, 1);
}

设置FTYPE[1:0]为00波形如下所示。

	LSM6DS3TRC_Set_Register6(LSM6DS3TRC_CTRL6_C_FTYPE_1);

在这里插入图片描述

"LPF1_SEL_G"参数用于启用或禁用陀螺仪的数字低通滤波器1(LPF1)。如果设为1,则该滤波器启用;如果设为0,则该滤波器禁用,这里需要对LPF1_SEL_G 配置为1打开。

在这里插入图片描述

#define LSM6DS3TRC_CTRL4_C		0x13
//CTRL4_C register
#define LSM6DS3TRC_CTRL4_DEN_XL_EN_DISABLE 0x00
#define LSM6DS3TRC_CTRL4_DEN_XL_EN_ENABLE	0x80
#define LSM6DS3TRC_CTRL4_SLEEP_ENABLE	0x40
#define LSM6DS3TRC_CTRL4_SLEEP_DISABLE	0x00
#define LSM6DS3TRC_CTRL4_DEN_DRDY_INT1_DISBALE	0x00
#define LSM6DS3TRC_CTRL4_DEN_DRDY_INT1_ENABLE	0x20
#define LSM6DS3TRC_CTRL4_DRDY_MASK_DISABLE	0x00
#define LSM6DS3TRC_CTRL4_DRDY_MASK_ENABLE	0x08
#define LSM6DS3TRC_CTRL4_I2C_DISABLE 0x04
#define LSM6DS3TRC_CTRL4_I2C_ENABLE 0x00
#define LSM6DS3TRC_CTRL4_LPF1_SELG_ENABLE	0x02
#define LSM6DS3TRC_CTRL4_LPF1_SELG_DISABLE	0x00
/***************************************************************************************************************
LSM6DS3TRC Set register 6
****************************************************************************************************************/
void LSM6DS3TRC_Set_Register4(uint8_t reg4)
{
	uint8_t buf[1] = {0};

	LSM6DS3TRC_ReadCommand(LSM6DS3TRC_CTRL4_C, buf, 1);
	buf[0] |= reg4;
	LSM6DS3TRC_WriteCommand(LSM6DS3TRC_CTRL4_C, buf, 1);
}

使能低通滤波器波形如下所示。

	LSM6DS3TRC_Set_Register4(LSM6DS3TRC_CTRL4_LPF1_SELG_ENABLE);

在这里插入图片描述
总的配置流程如下所示。

在这里插入图片描述

陀螺仪初始化配置

/***************************************************************************************************************
LSM6DS3TRC Init
****************************************************************************************************************/
bool LSM6DS3TRC_Init(uint8_t mode)
{
	lsm6ds3trc_mode = mode;

	if (LSM6DS3TRC_GetChipID() == false)
		return false;

	//reboot and reset register
	LSM6DS3TRC_Reset();

	//enable Block Data Update
	LSM6DS3TRC_Set_BDU(true);

	//Set Data Rate
	LSM6DS3TRC_Set_Accelerometer_Rate(LSM6DS3TRC_ACC_RATE_12HZ5);
	LSM6DS3TRC_Set_Gyroscope_Rate(LSM6DS3TRC_GYR_RATE_12HZ5);

	//Set full-scale selection.
	LSM6DS3TRC_Set_Accelerometer_Fullscale(LSM6DS3TRC_ACC_FSXL_2G);
	LSM6DS3TRC_Set_Gyroscope_Fullscale(LSM6DS3TRC_GYR_FSG_2000);

	//set accelerometer analog chain bandwidth.
	LSM6DS3TRC_Set_Accelerometer_Bandwidth(LSM6DS3TRC_ACC_BW0XL_400HZ, LSM6DS3TRC_ACC_LOW_PASS_ODR_100);

	LSM6DS3TRC_Set_Register7(LSM6DS3TRC_CTRL7_G_HP_EN_ENABLE | LSM6DS3TRC_CTRL7_G_HPM_260MHZ);
	LSM6DS3TRC_Set_Register6(LSM6DS3TRC_CTRL6_C_FTYPE_1);
	LSM6DS3TRC_Set_Register4(LSM6DS3TRC_CTRL4_LPF1_SELG_ENABLE);

	if (LSM6DS3TRC_GetChipID() == false)
		return false;
	return true;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/581648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中0.2+0.1的问题解决方案

Python中0.20.1的问题解决方案 在Python中,0.20.1的结果并非等于0.3。这是由于计算机在二进制中存储小数时会存在精度问题导致的。而这个问题在日常编程中可能并不会带来太大的影响,但在需要精确计算的场景下,如金融或科学领域,就…

第 2 章:Vue 组件化编程

目录 模块与组件、模块化与组件化 模块 组件 模块化 组件化 非单文件组件 小结 组件的几个注意点 组件的嵌套 VueComponent构造函数 小结 一个重要的内置关系 小结 单文件组件 一个.vue 文件的组成(3 个部分) 1. 模板页面 2. JS 模块对象 3. 样式 基本使用 模…

chatgpt赋能python:Python中4+5的结果是多少?

Python中45的结果是多少? Python是一种高级的编程语言,由它所支持的各种库和框架,可以对不同的业务场景进行快速、高效的处理。在Python中,基本的运算符包括加、减、乘、除等,其中加操作是一个非常基本的操作&#xf…

chatgpt赋能python:Python中isin函数的使用方法

Python中isin函数的使用方法 Python是一种流行的编程语言,被广泛使用于数据分析、Web应用程序和游戏开发等领域。其中,Python的算法和数据结构库为程序员提供了实用的工具,使得数据的筛选、排序和搜索操作更加简易。Python之中的isin函数&am…

浅尝RTSP

RTSP (real time streaming protocol) RTC2326 RTSP 实时流传输协议,是TCP/IP 协议体系中的一个应用层协议,由哥伦比亚大学, 网景和realnetworks公司提交的IETF RTC 标准,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。 RTSP在体系结构上位于 rtp…

二分搜索树层序遍历

二分搜索树的层序遍历,即逐层进行遍历,即将每层的节点存在队列当中,然后进行出队(取出节点)和入队(存入下一层的节点)的操作,以此达到遍历的目的。 通过引入一个队列来支撑层序遍历…

【SpringBoot】整合Mybatis-Plus并输出SQL日志

目录 本地开发环境说明pom.xml主要依赖application.yml主要配置MapperScan注解使用说明实体类示例Mapper接口示例Service接口示例Service接口实现类示例单元测试示例打印SQL日志使用slf4j打印SQL 总结 本地开发环境说明 开发依赖版本Spring Boot3.0.6Mybatis-Plus3.5.3.1JDK20…

git客户端的使用

1. git 分布式版本控制工具。 具有中央服务器仓库和本地仓库。 客户端下载:GitHub Desktop | Simple collaboration from your desktop 2. git的使用 2.1 修改操作本地仓库的用户信息 2.2 创建本地仓库 左上角:File - New repository 本地的两个仓库…

chatgpt赋能python:Python中4.5/2:浮点数除法的谬误

Python中4.5/2:浮点数除法的谬误 在Python中,当我们尝试对两个整数进行除法运算时,通常可以得到预期的正确结果。但是,当我们的被除数或者除数是浮点数时,可能会遇到令人疑惑的结果。 例如,执行4.5/2的计…

chatgpt赋能python:Python中Delete的用法及其重要性

Python中Delete的用法及其重要性 Python是一种强大的编程语言,它提供了许多强大的工具和API,帮助程序员轻松编写高效的代码。其中,Delete是Python语言中一个非常重要的关键字,用于删除对象和变量。 Delete的用法 Delete作为Pyt…

chatgpt赋能python:Python中IDLE怎么执行代码

Python中IDLE怎么执行代码 介绍 作为一种非常流行的编程语言,Python可以编写各种应用程序,从自动化脚本到网站后端。无论您是一个新手还是一个经验丰富的程序员,您都可能会使用Python编程语言来完成您的工作。 一个好的Python IDE可以大大…

sql的各种排序(order by加asc或者desc、order by加field()加asc或者desc)

sql的各种排序(order by加asc或者desc、order by加field()加asc或者desc) 1.单字段排序; 【order by】排序:order by后面跟着的字段就是数据的排序字段; (1)升序排序; 举例&#x…

c++—封装:构造函数、析构函数、成员操作

1. 封装的主要目的是解决代码的维护性问题,经过封装的函数代码独立性高; 2. 封装的演变历史,以栈为例子介绍: ①成员(top、data[ ])都在main函数里,动作方法(push、pop)…

力扣sql中等篇练习(二十八)

力扣sql中等篇练习(二十八) 1 每个城市最高气温的第一天 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT w.city_id,MIN(w.day) day,w.degree FROM Weather w INNER JOIN (SELECT city_id,MAX(degr…

chatgpt赋能python:Python中keys的概述

Python中keys的概述 在Python中,字典(dictionary)是一种非常常见的数据结构,它由一系列键(keys)和对应值(values)组成。键是唯一的,而值可以重复。在字典中,…

Lucene基础学习

一、基础知识 1.Lucene简介 2.入门实例 3.内建Query对象 4.分析器Analyzer 5.Query Parser 6.索引 7.排序 8.过滤 9.概念简介 10.Lucene入门实例 二、Lucene的基础 三、索引建立 1.lucene索引_创建_域选项 2.lucene索引_的删除和更新 3.lucene索引_加权操作和Luke的简单演示…

msvcp140.dll丢失怎么办?msvcp140.dll重新安装的解决方法

msvcp140.dll是微软编译器系统中的一个动态链接库文件,它存储了许多的代码和数据,能帮助计算机程序正常运行。当系统中出现了msvcp140.dll丢失的情况时,则会出现程序无法正常运行的错误。这篇文章将为大家介绍如何解决msvcp140.dll丢失的问题…

WookTeam是一款轻量级的开源在线团队协作工具

产品介绍 English Documentation wookteam 是一款轻量级的在线团队协作工具,提供各类文档工具、在线思维导图、在线流程图、项目管理、任务分发,知识库管理等工具。wookteam 支持团队在线聊天沟通,订阅任务动态实时推送。wookteam 全部开源…

JavaScript实现用while语句来计算1-10的和的代码

以下为实现用while语句来计算1-10的和的程序代码和运行截图 目录 前言 一、用while语句来计算1-10的和 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择,您可以在目录里进行快速查找; 2.本博文代码可以根据…

chatgpt赋能python:Python中的Dayup:如何用编程实现日益进步?

Python中的Dayup:如何用编程实现日益进步? 在Python编程语言中,Dayup是一个非常受欢迎的概念,它代表了一种积极向上的生活态度,即每天都在不断进步。这一概念起源于一位中国作家的作品,被广泛应用于生活、…