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

【STM32】MPU6050初始化常用寄存器说明及示例代码

        一、MPU6050常用配置寄存器

        1、电源管理寄存器1( PWR_MGMT_1
        此寄存器允许用户配置电源模式和时钟源。
        DEVICE_RESET :用于控制复位的比特位。设置为1时复位 MPU6050,内部寄存器恢复为默认值,复位结束后MPU硬件自动清零该位。
        SLEEP:用于控制 MPU6050 工作模式的比特位。MPU6050复位后该位置 1,即进入了低功耗睡眠模式。因此,设备上电复位后,我们要将该比特位置0以进入正常工作模式。
        TEMP_DIS:用于设置是否使能温度传感器的比特位。将该位置为0则使能温度传感器。
        CLKSEL[2:0]:用于设置系统时钟源的比特位。可选择使用内部8MHz晶振、外部晶振或陀螺仪时钟作为时钟源。 设备上电默认是使用内部 8M的RC晶振,但因其精度不高,官方推荐使用陀螺锁相环或者外部时间作为时钟源,以提高稳定性。一般设置 CLKSEL=001 即可。时钟源可根据下表进行选择:

//示例代码
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);	//复位MPU6050,设置电源管理寄存器 1(0X6B)的bit7 为 1
delay_ms(100);
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);	//唤醒MPU6050,设置电源管理寄存器 1(0X6B)为 0X00    
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);	//设置CLKSEL,PLL X轴为参考, 设置电源管理寄存器 1(0X1B)bit2、bit1、bit0 为 001

        2、陀螺仪配置寄存器( GYRO_CONFIG


        此寄存器用于触发陀螺仪自检,并配置陀螺仪的满量程范围。
        我们重点关注FS_SEL[1:0]这两个位,它用于设置陀螺仪的满量程范围,一般设置为 3,即±2000°/S,因为陀螺仪的 ADC 为 16 位分辨率,所以得到灵敏度为:65536/4000=16.4LSB/(°/S)。

//示例代码
MPU_Set_Gyro_Fsr(3);	//陀螺仪传感器,±2000dps, 设置陀螺仪配置寄存器(0X1B)bit4、bit3 为 3 

        3、加速度传感器配置寄存器( ACCEL_CONFIG


        此寄存器用于触发加速度计的自检,并配置加速度计的满量程范围,还可配置了数字高通滤波器(DHPF)。
        我们重点关注AFS_SEL[1:0]这两个位,用于设置加速度传感器的满量程范围,一般设置为 0,即±2g,因为加速度传感器的ADC 也是 16 位,所以得到灵敏度为:65536/4=16384LSB/g。

//示例代码
MPU_Set_Accel_Fsr(0);	  //加速度传感器,±2g ,  设置加速度传感器配置寄存器(0X1C)bit4、bit3 为 0

        4、FIFO 使能寄存器( FIFO_EN

        此寄存器用于控制 FIFO 使能,确定将哪些传感器测量值加载到FIFO缓冲区中。如果传感器各自的FIFO_EN位在该寄存器中被设置为1,则存储在传感器数据寄存器(寄存器59至96)内的数据将被加载到FIFO缓冲器中。这些传感器按照寄存器25中定义的采样速率进行采样。
        实际应用中,在简单读取传感器数据的时候,可以不用 FIFO,设置对应位为 0 即可禁止 FIFO,设置为 1 则使能 FIFO。加速度传感器的 3 个轴,全由 1个位(ACCEL_FIFO_EN)控制,只要该位置 1,则加速度传感器的三个通道都开启 FIFO了。

        5、陀螺仪采样率分频寄存器( SMPRT_DIV
        该寄存器用于设置 MPU6050 的陀螺仪采样频率,计算公式为:
                采样频率 = 陀螺仪输出频率 / (1+SMPLRT_DIV)
      陀螺仪的输出频率,是 1Khz 或者 8Khz,与数字低通滤波器(DLPF)的设置有关:当 DLPF_CFG=0/7 的时候,频率为 8Khz,其他情况是 1Khz。 一般情况下,DLPF 滤波带宽设置为采样率的 1/2 。
        采样率,我们假定设置为 50Hz,那么采样分频器值 SMPLRT_DIV = 1000/50-1 = 19。
        注意:加速度计的输出速率为1 kHz。这意味着,对于大于1 kHz的采样率,相同的加速度计采样数据可以不止一次地输出到FIFO、DMP和传感器寄存器。

        6、配置寄存器( CONFIG

        对于这个寄存器,我们主要关注DLPF_CFG[2:0],即数字低通滤波器(DLPF)的设置位,加速度计和陀螺仪都是根据这三个比特位的配置进行过滤的。DLPF_CFG[2:0] 不同配置对应的过滤情况如下表所示:

        加速度传感器的输出速率(Fs)固定是 1Khz,而陀螺仪传感器的输出速率(Fs)根据 DLPF_CFG 的配置有所不同。一般我们设置陀螺仪传感器的带宽为其采样率的一半,如前面所说的,如果设置采样率为 50Hz,那么带宽就应该设置为 25Hz,取近似值 20Hz,就应该设置 DLPF_CFG = 4 (二进制 100)。

        7、电源管理寄存器2( PWR_MGMT_2

        此寄存器允许用户在仅加速计低功率模式下配置唤醒频率。这个寄存器还允许用户将加速度计和陀螺仪的各个轴进入待机模式。一般情况下配置为 0 。可根据实际情况设置,详细内容可参考寄存器手册。

        8、陀螺仪数据输出寄存器(6个8位寄存器,0x43~0x48)
        陀螺仪传感器数据输出寄存器由6个8位寄存器组成,分别存储X/Y/Z三个轴的陀螺仪传感器数据,高字节在前,低字节在后。
        每个16位陀螺仪测量都有一个在FS_SEL(寄存器27)中定义的满量程。对于每个全尺度设置,陀螺仪每LSB的灵敏度如下表所示

        9、加速度传感器数据输出寄存器(6个,0x3B~0x40)

        加速度传感器数据输出寄存器由6个8位寄存器组成,输出X/Y/Z三个轴的加速度传感器值,高字节在前,低字节在后。
        每个
16位加速度计测量都有一个在ACCEL_FS(寄存器28)中定义的完整尺度。对于每个完整的尺度设置,ACCEL_xOUT中每LSB加速度计的灵敏度如下表所示。

        10、温度传感器数据输出寄存器( TEMP_OUT_H and TEMP_OUT_L

        温度换算公式为:   Temperature = 36.53 + regval/340,  其中,Temperature为计算得到的温度值,单位为℃,regval为从0X41和0X42读到的温度传感器有符号值。

        二、MPU6050初始化

        1、初始化 IIC 接口。MPU6050 采用 I2C 与 STM32F1 通信,需要先初始化与 MPU6050 连接的 SDA和 SCL 数据线。
        2复位并唤醒 MPU6050。复位操作使 MPU6050 内部所有寄存器恢复默认值,通过对电源管理寄存器 1(0x6B)的DEVICE_RESET置 1 实现。 复位结束后,电源管理寄存器 1 恢复默认值(0x40),然后必须设置该寄存器为0x00,以唤醒 MPU6050,进入正常工作模式。
       3、设置角速度传感器(陀螺仪)和加速度传感器的满量程范围。通过陀螺仪配置寄存器(0x1B)和加速度传感器配置寄存器(0x1C)设置,一般设置陀螺仪的满量程范围为±2000dps,加速度传感器的满量程范围为±2g。
        4、设置其他参数。需要配置的参数还有:关闭中断、关闭 AUX IIC 接口(没有磁力计)、禁止 FIFO、设置陀螺仪采样率和设置数字低通滤波器(DLPF)等。如果不采用中断方式读取数据,则关闭中断;如果不使用 AUX IIC 接口外接其他传感器,则关闭此接口。可以分别通过中断使能寄存器(0x38)和用户控制寄存器(0x6A)控制。MPU6050 可以使用 FIFO 存储传感器数据,如果不使用则可以关闭所有 FIFO 通道,可能通过 FIFO 使能寄存器(0x23)控制,默认都置 0(即禁止 FIFO),所以用默认值就可以了。陀螺仪采样率通过采样率分频寄存器(0x19)控制。数字低通滤波器(DLPF)则通过配置寄存器(0x1A)设置,一般设置 DLPF 带宽为采样率的 1/2 。
        5、配置系统时钟源并使能角速度(陀螺仪)传感器和加速度传感器。系统时钟源同样是通过电源管理寄存器 1(0x1B)来设置,该寄存器的最低三位用于设置系统时钟源选择,默认值是 0(内部 8M RC 震荡),一般设置为 1,选择 x 轴陀螺 PLL 作为时钟源,以获得更高精度的时钟。同时,使能角速度传感器和加速度传感器,这两个操作通过电源管理寄存器 2(0x6C)来设置,设置对应位为 0 即可开启。
        至此,MPU6050 的初始化就基本完成了,可以正常工作了(其他未设置的寄存器全部采用默认值即可)。

        三、MPU6050初始化示例代码
//部分宏定义数据
//MPU6050 AD0控制脚
#define MPU_AD0_CTRL			PAout(15)	//控制AD0电平,从而控制MPU地址//#define MPU_ACCEL_OFFS_REG		0X06	//accel_offs寄存器,可读取版本号,寄存器手册未提到
//#define MPU_PROD_ID_REG			0X0C	//prod id寄存器,在寄存器手册未提到
#define MPU_SELF_TESTX_REG		0X0D	//自检寄存器X
#define MPU_SELF_TESTY_REG		0X0E	//自检寄存器Y
#define MPU_SELF_TESTZ_REG		0X0F	//自检寄存器Z
#define MPU_SELF_TESTA_REG		0X10	//自检寄存器A
#define MPU_SAMPLE_RATE_REG		0X19	//采样频率分频器
#define MPU_CFG_REG				0X1A	//配置寄存器
#define MPU_GYRO_CFG_REG		0X1B	//陀螺仪配置寄存器
#define MPU_ACCEL_CFG_REG		0X1C	//加速度计配置寄存器
#define MPU_MOTION_DET_REG		0X1F	//运动检测阀值设置寄存器
#define MPU_FIFO_EN_REG			0X23	//FIFO使能寄存器
#define MPU_I2CMST_CTRL_REG		0X24	//IIC主机控制寄存器
#define MPU_I2CSLV0_ADDR_REG	0X25	//IIC从机0器件地址寄存器
#define MPU_I2CSLV0_REG			0X26	//IIC从机0数据地址寄存器
#define MPU_I2CSLV0_CTRL_REG	0X27	//IIC从机0控制寄存器
#define MPU_I2CSLV1_ADDR_REG	0X28	//IIC从机1器件地址寄存器
#define MPU_I2CSLV1_REG			0X29	//IIC从机1数据地址寄存器
#define MPU_I2CSLV1_CTRL_REG	0X2A	//IIC从机1控制寄存器
#define MPU_I2CSLV2_ADDR_REG	0X2B	//IIC从机2器件地址寄存器
#define MPU_I2CSLV2_REG			0X2C	//IIC从机2数据地址寄存器
#define MPU_I2CSLV2_CTRL_REG	0X2D	//IIC从机2控制寄存器
#define MPU_I2CSLV3_ADDR_REG	0X2E	//IIC从机3器件地址寄存器
#define MPU_I2CSLV3_REG			0X2F	//IIC从机3数据地址寄存器
#define MPU_I2CSLV3_CTRL_REG	0X30	//IIC从机3控制寄存器
#define MPU_I2CSLV4_ADDR_REG	0X31	//IIC从机4器件地址寄存器
#define MPU_I2CSLV4_REG			0X32	//IIC从机4数据地址寄存器
#define MPU_I2CSLV4_DO_REG		0X33	//IIC从机4写数据寄存器
#define MPU_I2CSLV4_CTRL_REG	0X34	//IIC从机4控制寄存器
#define MPU_I2CSLV4_DI_REG		0X35	//IIC从机4读数据寄存器#define MPU_I2CMST_STA_REG		0X36	//IIC主机状态寄存器
#define MPU_INTBP_CFG_REG		0X37	//中断/旁路设置寄存器
#define MPU_INT_EN_REG			0X38	//中断使能寄存器
#define MPU_INT_STA_REG			0X3A	//中断状态寄存器#define MPU_ACCEL_XOUTH_REG		0X3B	//加速度值,X轴高8位寄存器
#define MPU_ACCEL_XOUTL_REG		0X3C	//加速度值,X轴低8位寄存器
#define MPU_ACCEL_YOUTH_REG		0X3D	//加速度值,Y轴高8位寄存器
#define MPU_ACCEL_YOUTL_REG		0X3E	//加速度值,Y轴低8位寄存器
#define MPU_ACCEL_ZOUTH_REG		0X3F	//加速度值,Z轴高8位寄存器
#define MPU_ACCEL_ZOUTL_REG		0X40	//加速度值,Z轴低8位寄存器#define MPU_TEMP_OUTH_REG		0X41	//温度值高八位寄存器
#define MPU_TEMP_OUTL_REG		0X42	//温度值低8位寄存器#define MPU_GYRO_XOUTH_REG		0X43	//陀螺仪值,X轴高8位寄存器
#define MPU_GYRO_XOUTL_REG		0X44	//陀螺仪值,X轴低8位寄存器
#define MPU_GYRO_YOUTH_REG		0X45	//陀螺仪值,Y轴高8位寄存器
#define MPU_GYRO_YOUTL_REG		0X46	//陀螺仪值,Y轴低8位寄存器
#define MPU_GYRO_ZOUTH_REG		0X47	//陀螺仪值,Z轴高8位寄存器
#define MPU_GYRO_ZOUTL_REG		0X48	//陀螺仪值,Z轴低8位寄存器#define MPU_I2CSLV0_DO_REG		0X63	//IIC从机0数据寄存器
#define MPU_I2CSLV1_DO_REG		0X64	//IIC从机1数据寄存器
#define MPU_I2CSLV2_DO_REG		0X65	//IIC从机2数据寄存器
#define MPU_I2CSLV3_DO_REG		0X66	//IIC从机3数据寄存器#define MPU_I2CMST_DELAY_REG	0X67	//IIC主机延时管理寄存器
#define MPU_SIGPATH_RST_REG		0X68	//信号通道复位寄存器
#define MPU_MDETECT_CTRL_REG	0X69	//运动检测控制寄存器
#define MPU_USER_CTRL_REG		0X6A	//用户控制寄存器
#define MPU_PWR_MGMT1_REG		0X6B	//电源管理寄存器1
#define MPU_PWR_MGMT2_REG		0X6C	//电源管理寄存器2 
#define MPU_FIFO_CNTH_REG		0X72	//FIFO计数寄存器高八位
#define MPU_FIFO_CNTL_REG		0X73	//FIFO计数寄存器低八位
#define MPU_FIFO_RW_REG			0X74	//FIFO读写寄存器
#define MPU_DEVICE_ID_REG		0X75	//器件ID寄存器//如果AD0脚(9脚)接地,IIC地址为0X68(不包含最低位).
//如果接V3.3,则IIC地址为0X69(不包含最低位).
#define MPU_ADDR				0X68//初始化MPU6050
//返回值:0,成功
//    其他,错误代码
u8 MPU_Init(void)
{ u8 res;MPU_AD0_CTRL=0;			//控制MPU6050的AD0脚为低电平,从机地址为:0x68MPU_IIC_Init();//初始化IIC总线MPU_Write_Byte(MPU_PWR_MGMT1_REG,0x80);	//复位MPU6050 , 设置电源管理寄存器 1(0x6B)的bit7 为 1delay_ms(100);MPU_Write_Byte(MPU_PWR_MGMT1_REG,0x00);	//唤醒MPU6050, 设置电源管理寄存器 1(0x6B)为 0X00    MPU_Set_Gyro_Fsr(3);	 //陀螺仪传感器,±2000dps, 设置陀螺仪配置寄存器(0x1B)bit4、bit3 为 3 MPU_Set_Accel_Fsr(0);	//加速度传感器,±2g, 设置加速度传感器配置寄存器(0x1C)bit4、bit3 为 0MPU_Set_Rate(50);	 //设置采样率50HzMPU_Write_Byte(MPU_INT_EN_REG,0x00);	//关闭所有中断MPU_Write_Byte(MPU_USER_CTRL_REG,0x00);	//I2C主模式关闭MPU_Write_Byte(MPU_FIFO_EN_REG,0x00);	//关闭FIFO, 设置FIFO 使能寄存器(0X23)为 0X00MPU_Write_Byte(MPU_INTBP_CFG_REG,0x80);	//INT引脚低电平有效res=MPU_Read_Byte(MPU_DEVICE_ID_REG);if(res==MPU_ADDR)//器件ID正确{MPU_Write_Byte(MPU_PWR_MGMT1_REG,0x01);	//设置CLKSEL,PLL X轴为参考, 设置电源管理寄存器 1(0X1B)bit2、bit1、bit0 为 001MPU_Write_Byte(MPU_PWR_MGMT2_REG,0x00);	//加速度与陀螺仪都工作, 设置电源管理寄存器2(0X6C) 为 0X00MPU_Set_Rate(50);	 //设置采样率为50Hz                          }else return 1;return 0;
}
// 以上为MPU6050初始化部分//初始化IIC
void MPU_IIC_Init(void)
{					     GPIO_InitTypeDef  GPIO_InitStructure;	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//先使能外设IO PORTB时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;	 // 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHzGPIO_Init(GPIOB, &GPIO_InitStructure);		 //根据设定参数初始化GPIO GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);	 //PB10,PB11 输出高	}//IIC写一个字节 
//reg:寄存器地址
//data:数据
//返回值:0,正常
//    其他,错误代码
u8 MPU_Write_Byte(u8 reg,u8 data) 				 
{ MPU_IIC_Start(); MPU_IIC_Send_Byte((MPU_ADDR<<1)|0);//发送器件地址+写命令	if(MPU_IIC_Wait_Ack())	//等待应答{MPU_IIC_Stop();		 return 1;		}MPU_IIC_Send_Byte(reg);	//写寄存器地址MPU_IIC_Wait_Ack();		//等待应答 MPU_IIC_Send_Byte(data);//发送数据if(MPU_IIC_Wait_Ack())	//等待ACK{MPU_IIC_Stop();	 return 1;		 }		 MPU_IIC_Stop();	 return 0;
}//设置MPU6050陀螺仪传感器满量程范围
//fsr:0,±250dps;1,±500dps;2,±1000dps;3,±2000dps
//返回值:0,设置成功
//    其他,设置失败 
u8 MPU_Set_Gyro_Fsr(u8 fsr)
{return MPU_Write_Byte(MPU_GYRO_CFG_REG,fsr<<3);//设置陀螺仪满量程范围  
}//设置MPU6050加速度传感器满量程范围
//fsr:0,±2g;1,±4g;2,±8g;3,±16g
//返回值:0,设置成功
//    其他,设置失败 
u8 MPU_Set_Accel_Fsr(u8 fsr)
{return MPU_Write_Byte(MPU_ACCEL_CFG_REG,fsr<<3);//设置加速度传感器满量程范围  
}//设置MPU6050的采样率(假定陀螺仪输出频率Fs=1KHz)
//rate:4~1000(Hz)
//返回值:0,设置成功
//    其他,设置失败 
u8 MPU_Set_Rate(u16 rate)
{u8 data;if(rate>1000)rate=1000;if(rate<4)rate=4;data=1000/rate-1;         //由采样频率 = 陀螺仪输出频率 / (1+SMPLRT_DIV)得 SMPLRT_DIV= 陀螺仪输出频率 / 采样频率 - 1data=MPU_Write_Byte(MPU_SAMPLE_RATE_REG,data);	//设置数字低通滤波器return MPU_Set_LPF(rate/2);	//自动设置LPF为采样率的一半
}//IIC读一个字节 
//reg:寄存器地址 
//返回值:读到的数据
u8 MPU_Read_Byte(u8 reg)
{u8 res;MPU_IIC_Start(); MPU_IIC_Send_Byte((MPU_ADDR<<1)|0);//发送器件地址+写命令	MPU_IIC_Wait_Ack();		//等待应答 MPU_IIC_Send_Byte(reg);	//写寄存器地址MPU_IIC_Wait_Ack();		//等待应答MPU_IIC_Start();MPU_IIC_Send_Byte((MPU_ADDR<<1)|1);//发送器件地址+读命令	MPU_IIC_Wait_Ack();		//等待应答 res=MPU_IIC_Read_Byte(0);//读取数据,发送nACK MPU_IIC_Stop();			//产生一个停止条件 return res;		
}

        四、结语。
        本文内容部分参考网络大神提供的代码,如有权利限制,请及时联系。

相关文章:

【STM32】MPU6050初始化常用寄存器说明及示例代码

一、MPU6050常用配置寄存器 1、电源管理寄存器1&#xff08; PWR_MGMT_1 &#xff09; 此寄存器允许用户配置电源模式和时钟源。 DEVICE_RESET &#xff1a;用于控制复位的比特位。设置为1时复位 MPU6050&#xff0c;内部寄存器恢复为默认值&#xff0c;复位结束…...

LDR6020驱动的Type-C接口显示器解决方案

一、引言 随着科技的飞速发展&#xff0c;Type-C接口凭借其高速数据传输、强大的电力传输能力以及便捷的正反可插设计&#xff0c;正逐渐成为现代电子设备的主流接口标准。在显示器领域&#xff0c;Type-C接口的引入不仅简化了线缆连接&#xff0c;还为用户带来了更丰富的功能…...

Spring Boot + Android 实现登录功能

在移动互联网的今天&#xff0c;许多应用需要通过移动端实现与服务器的交互功能&#xff0c;其中登录是最常见且基础的一种功能。通过登录&#xff0c;用户可以获得独特的身份标识&#xff0c;从而访问特定的资源或服务。本篇博客将详细介绍如何使用 Spring Boot 和 Android 实…...

【通俗理解】边际化技巧在概率论中的应用——从公式到实例

【通俗理解】边际化技巧在概率论中的应用——从公式到实例 关键词提炼 #边际化技巧 #概率论 #联合概率 #条件概率 #积分计算 #概率分布 #贝叶斯推断 第一节&#xff1a;边际化技巧的类比与核心概念【尽可能通俗】 边际化技巧&#xff0c;就像是你在一个复杂的概率迷宫中&am…...

Chen_AdaMV-MoE_Adaptive_Multi-Task_Vision_Mixture-of-Experts 译文

摘要 稀疏激活的专家混合&#xff08;MoE&#xff09;正在成为多任务学习&#xff08;MTL&#xff09;的一个有前途的范例。 MoE 不是将多个任务的知识压缩到单个模型中&#xff0c;而是分离参数空间&#xff0c;仅利用给定任务类型及其输入的相关模型片段&#xff0c;从而提供…...

多线程下使用数据库 - 20241124

问题 并发性较低&#xff0c;每秒千次但是较高一致性&#xff0c;比如利用数据库中的数据进行判断是否执行某个操作 存在的问题是&#xff0c;如何只锁定判断相关的数据&#xff0c;而不影响数据库操作无关数据。脏读/不可重复读/幻读 解决方案 利用数据InnoDB引擎的LBCC和…...

GMAN解读(论文+代码)

一、注意力机制 注意力机制与传统的卷积神经网络不同的是&#xff0c;前者擅长捕获全局依赖和长程关系&#xff0c;权重会动态调整。而后者对于所有特征都使用同一个卷积核。关于更多注意力机制内容&#xff0c;详见&#xff1a; 注意力机制、自注意力机制、多头注意力机制、通…...

《文件操作》

一 . 文本文件和二进制文件 根据数据的组织形式&#xff0c;数据文件被分为了二进制文件和文本文件 数据在内存中是以二进制的形式存储&#xff0c;如果不加转换的输出到外存的文件中&#xff0c;就是二进制文件。 如果要求在外存上以ASCII 码的形式存储&#xff0c;则需要再存…...

【君正T31开发记录】8.了解rtsp协议及设计模式

前边搞定了驱动&#xff0c;先不着急直接上手撸应用层的代码&#xff0c;先了解一下大致要用到的东西。 设计PC端先用vlc rtsp暂时H264编码&#xff08;vlc好像不支持h265,这个后边我试试&#xff09;的视频流&#xff0c;先需要支持上rtsp server&#xff0c;了解rtsp协议是必…...

C++菜鸟教程 - 从入门到精通 第三节

上节课的题 上节课的题,大家都做出来了吗? 看一下这道题: 题目描述 N!1*2*...*N; 例5!1*2*3*4*5120. 编程求1!2!3!...N!. 输入 输入一行&#xff0c;只有一个整数n (1<n<10) 输出 输出只有一行&#xff08;这意味着末尾有一个回车符号&#xff09;&#xff0c;包括1…...

原生JS和CSS,HTML实现开屏弹窗

开屏弹窗常应用于打开游戏&#xff0c;或者打开网站的时候&#xff0c;跳出来在正中间&#xff0c;来显示一些信息&#xff0c;并可以设置今日不再显示 CSS代码如下 <style>#box {width: 100vw;height: 100vh;background-color: rgba(0, 0, 0, 0.2);position: relative…...

微软发布Win11 24H2系统11月可选更新KB5046740!

系统之家11月22日报道&#xff0c;微软针对Win11 24H2系统推出2024年11月最新可选更新补丁KB5046740&#xff0c;更新后系统版本后升至26100.2454&#xff0c;此次更新后修复当应用程序以PDF和XLSX格式导出图表对象时停止响应、无法使用API查找旋转信息等问题。以下小编将给大家…...

【Rabbitmq篇】高级特性----TTL,死信队列,延迟队列

目录 一.TTL 1.设置消息的TTL 2.设置队列的TTL 3.俩者区别 二.死信队列 定义&#xff1a; 消息成为死信的原因&#xff1a; 1.消息被拒绝&#xff08;basic.reject 或 basic.nack&#xff09; 2.消息过期&#xff08;TTL&#xff09; 3.队列达到最大长度 ​编辑 …...

【Linux】gcc/g++使用

编译 我们知道&#xff0c;gcc只能编译C&#xff0c;g既能编译C&#xff0c;也能编译C。 由于两者的选项是相同的&#xff0c;这里我们使用gcc来说明。 这就是一个我们在linux中gcc编译一段代码后会自动生成一个a.out为名的可执行文件&#xff0c;然后我们./a.out&#xff0c…...

IDEA2023 SpringBoot整合MyBatis(三)

一、数据库表 CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT,gender ENUM(Male, Female, Other),email VARCHAR(100) UNIQUE,phone_number VARCHAR(20),address VARCHAR(255),date_of_birth DATE,enrollment_date DATE,cours…...

Java网络编程 - cookiesession

cookie 之前学习了 Okhttp3 库可以调用API、抓取网页、下载文件。但是这些操作都是不要求登录的&#xff0c;如果 API、网页、文件等内容要求登录才能访问&#xff0c;就需要学习新的 cookie 相关的知识。 下面以豆瓣为例&#xff0c;使用 Java 程序读取“我的豆瓣”页面内容…...

100.【C语言】数据结构之二叉树的堆实现(顺序结构) 1

目录 1.顺序结构 2.示意图 ​编辑 从物理结构还原为逻辑结构的方法 3.父子节点编号的规律 4.顺序存储的前提条件 5.堆的简介 堆的定义 堆的两个重要性质 小根堆和大根堆 6.堆的插入 7.堆的实现及操作堆的函数 堆的结构体定义 堆初始化函数HeapInit 堆插入元素函…...

《Python基础》之循环结构

目录 简介 一、for循环 1、基本语法与作用 2、使用 range() 函数配合 for 循环 3、嵌套的for循环 二、while循环 1、基本语法与作用 2、while 循环嵌套 &#xff08;1&#xff09;、while循环与while循环嵌套 &#xff08;2&#xff09;、while循环与for循环嵌套 简介 …...

使用JDBC操作数据库

文章目录 使用JDBC操作数据库1. JDBC访问数据库步骤2. Statement与PreparedStatement区别3. JDBC的内容4. JDBC封装4.1 为什么进行JDBC封装4.2 实现JDBC封装4.3 什么是DAO4.4 配置数据库访问参数4.5 配置数据库连接池使用之JNDI的方式 5. 单例模式5.1 懒汉模式5.2 饿汉模式 使用…...

轻松解析 PDF 文档:深入了解 Python 的 pdfplumber 库

轻松解析 PDF 文档&#xff1a;深入了解 Python 的 pdfplumber 库 PDF 是一种常见的文件格式&#xff0c;广泛用于报告、文档、表单等领域。然而&#xff0c;如何高效解析 PDF 内容&#xff08;尤其是文本和表格&#xff09;&#xff0c;一直是开发者面临的挑战。pdfplumber 是…...

实验五 时域采样与频域采样

时域采样理论的验证 【实例3-1】近似绘制x (n) R4n 在(0,2 π \pi π ) 上的幅频响应曲线( F T [ x ( n ) ] FT[x(n)] FT[x(n)] )。 x [1, 1, 1, 1]; N 64; xk fft(x, N); figure; subplot(2, 1, 1); stem(0:3, x, .); subplot(2, 1, 2); k 0:N-1; plot(2*k/N, abs(x…...

爬虫cookie反爬------加速乐(jsl)

加速乐 反爬虫技术&#xff1a;加速乐采用了包括OB混淆、动态加密算法和多层Cookie获取等高级反爬虫技术&#xff0c;确保整体校验的严密性。关键校验字段位于Cookie中的 __jsl_clearance_s&#xff0c;其验证过程通常涉及三次关键的请求&#xff0c;有效抵御恶意爬虫的侵扰。…...

设计模式——解释器模式

定义&#xff1a; 解释器模式是一种行为设计模式&#xff0c;它给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;并定义一个解释器&#xff0c;这个解释器使用该表示来解释语言中的句子。在这种模式中&#xff0c;通常会将一个复杂的表达式&#xff08;如数学表达…...

sorted()函数

sorted(iterable, keyNone, reverseFalse)iterable: 需要排序的可迭代对象&#xff08;如列表、元组、字符串等&#xff09;。 key: 一个函数&#xff0c;用于从每个元素中提取排序的依据。如果未指定&#xff0c;默认直接比较元素本身。 reverse: 一个布尔值&#xff0c;Tru…...

动静态分析

静态分析 获取哈希值&#xff1a; 查壳&#xff1a; 导出函数&#xff1a; 获取资源信息&#xff1a; 通过发现dos头和pe头&#xff0c;来确定它是个可执行程序。 动态分析...

2024年信号处理与神经网络应用国际学术会议(SPNNA 2024)

重要信息 会议时间&#xff1a;2024年12月13-15日 会议地点&#xff1a;中国武汉 会议官网&#xff1a;www.spnna.org 会议简介 2024年信号处理与神经网络应用国际学术会议&#xff08;SPNNA 2024&#xff09;将于2024年12月13日至15日在中国武汉召开。本次会议旨在为全球研…...

winfrom快速自适应

在软件界面设计中&#xff0c;我们通常需要添加各种布局器和规则来实现界面布局&#xff0c;但对于不太熟练的工程师来说&#xff0c;这可能存在一定难度。这里要分享一种自适应布局的方法&#xff0c;它可以根据界面比例自动缩放内容控件&#xff0c;在较短时间内完成软件布局…...

VMware16安装macOS12【详细教程】

因为在应用上线IOS应用商店时&#xff0c;需要用到mac系统进行&#xff0c;于是就在VMware16pro虚拟机进行安装macOS12系统&#xff0c;安装的过程做了一个记录&#xff0c;希望对你有所帮助&#xff01; 前言 首先需要下载好下面工具&#xff1a; VMware workstation pro 16…...

【设计模式】【创建型模式(Creational Patterns)】之单例模式

单例模式是一种常用的创建型设计模式&#xff0c;其目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 单例模式的原理 单例模式的核心在于控制类的实例化过程&#xff0c;通常通过以下方式实现&#xff1a; 私有化构造函数&#xff0c;防止外部直接实例化。…...

【1.2 Getting Started--->Installation Guide】

NVIDIA TensorRT DOCS 此 NVIDIA TensorRT 10.6.0 安装指南提供安装要求、TensorRT 包中包含的内容列表以及安装 TensorRT 的分步说明。 安装指南 摘要&#xff1a; 本 NVIDIA TensorRT 10.3.0 安装指南提供了安装要求、TensorRT 软件包中包含的内容列表以及安装 TensorRT 的…...

Vue 中 data 属性为函数的深度剖析:原理、区别与实践

在 Vue.js 中,data 属性通常是一个 函数 而不是一个对象,这背后有一系列设计上的原因和原理,尤其是与 Vue 的组件系统、实例化机制、以及响应式数据的管理有关。下面我将详细解答这个问题,并结合实际项目示例和代码分析,进行全面讲解。 1. Vue 中 data 为什么是一个函数而…...

【漏洞复现】H3C 用户自助服务平台 dynamiccontent.properties.xhtml 远程命令执行

免责声明: 本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严重后果…...

【技术支持】vscode不使用插件,两种方式重命名html标签对

1. 使用 VS Code 内置功能 VS Code 内置支持 HTML/XML 标签对的重命名功能。步骤如下&#xff1a; 将光标放置在标签名上&#xff08;如 <div> 或</div>&#xff09;。按下快捷键 F2&#xff08;重命名符号&#xff09;。输入新的标签名&#xff0c;按 Enter&…...

【Seed-Labs 2.0】The Kaminsky Attack Lab

说在前面 本实验属为Seed-Labs 的DNS LAB 中的第二个实验&#xff0c;是第一个实验的延伸&#xff0c;从攻击者和受害者同一个LAN中变成不在同一个LAN中&#xff0c;该系列一共有五个实验: Local DNS Attack LabThe Kaminsky Attack LabDNS Rebinding Attack LabDNS Infrastr…...

node.js中使用express.static()托管静态资源

express.static()定义 express.static(root, [options])是一个中间件函数&#xff0c;负责为Express应用提供静态资源服务。它允许你指定一个或多个目录作为静态资源的根目录&#xff0c;当客户端请求这些资源时&#xff0c;Express会查找并返回对应的文件。 安装express npm i…...

SQL MAX() 函数深入解析

SQL MAX() 函数深入解析 概述 SQL&#xff08;Structured Query Language&#xff09;是一种广泛使用的数据库查询语言&#xff0c;它允许用户从数据库中检索、更新和管理数据。在SQL中&#xff0c;MAX() 函数是一个常用的聚合函数&#xff0c;用于从数据集中找出某一列的最大…...

WPF——自定义ToolTip

问题 前一天制作的图标按钮&#xff0c;在测试的过程中发现一个问题&#xff1a;为图标按钮添加的提示如下图所示&#xff0c;它的显示效果非常差&#xff0c;甚至不能看清文本内容&#xff0c;并且其字体与颜色也不是愚所希望的。 产生原因 此是由于tooltip有一个默认的样式…...

linux基本命令(1)

1. 文件和目录操作 ls — 列出目录内容 ls # 显示当前目录的文件和目录 ls -l # 显示详细的文件信息&#xff08;权限、大小、修改时间等&#xff09; ls -a # 显示所有文件&#xff08;包括隐藏文件&#xff09; ls -lh # 显示详细信息并以易读的方式显示文件大小 cd — 改…...

从0-1逐步搭建一个前端脚手架工具并发布到npm

前言 本文介绍的案例已同步到github&#xff0c;github地址。 vue-cli 和 create-react-app 等 cli 脚手架工具用于快速搭建应用&#xff0c;无需手动配置复杂的构建环境。本文介绍如何使用 rollup 搭建一个脚手架工具。 脚手架工具的工作流程简言为&#xff1a;提供远端仓库…...

开发者视角下的鸿蒙

鸿蒙操作系统&#xff08;HarmonyOS&#xff09;是华为公司自主研发的一款面向未来、面向全场景的分布式操作系统。它旨在为用户提供一个无缝的智能生活体验&#xff0c;支持多种终端设备&#xff0c;如智能手机、平板电脑、智能穿戴设备、智能家居等。鸿蒙操作系统的出现&…...

docker基础命令

目录 1、docker拉取镜像 2、查看镜像 3、运行镜像 4、查看容器 5、停止、启动、容器和删除容器 6、进入容器 7、删除镜像 8、保存镜像 9、加载镜像 10、镜像标签 11、制作镜像 ​12、镜像上传 1、docker拉取镜像 docker pull 用户名/镜像名:tag不加tag(版本号) 即…...

订单日记为“惠采科技”提供全方位的进销存管理支持

感谢温州惠采科技有限责任公司选择使用订单日记&#xff01; 温州惠采科技有限责任公司&#xff0c;成立于2024年&#xff0c;位于浙江省温州市&#xff0c;是一家以从事销售电气辅材为主的企业。 在业务不断壮大的过程中&#xff0c;想使用一种既能提升运营效率又能节省成本…...

C++共享智能指针

C中没有垃圾回收机制&#xff0c;必须自己释放分配的内存&#xff0c;否则就会造成内存泄漏。解决这个问题最有效的方式是使用智能指针。 智能指针是存储指向动态分配(堆)对象指针的类&#xff0c;用于生存期的控制&#xff0c;能够确保在离开指针所在作用域时&#xff0c;自动…...

数学建模学习(138):基于 Python 的 AdaBoost 分类模型

1. AdaBoost算法简介 AdaBoost(Adaptive Boosting)是一种经典的集成学习算法,由Yoav Freund和Robert Schapire提出。它通过迭代训练一系列的弱分类器,并将这些弱分类器组合成一个强分类器。算法的核心思想是:对于被错误分类的样本,在下一轮训练中增加其权重;对于正确分类…...

sqlite-vec一个SQLite3高效向量搜索扩展--JDBC环境使用

最近要用SQLite3&#xff0c;之前放出来了SQLiteUtile工具&#xff0c;方便操作。今天发现AIGC方面&#xff0c;RAG知识库需要使用向量数据库&#xff0c;来存储知识信息。一般呢都是用mysql&#xff0c;但无奈的是mysql就是不让用。突然又发现SQLite3有向量库扩展组件&#xf…...

Spark SQL操作

Spark SQL操作 文章目录 Spark SQL操作一、DataFrame的创建与保存1.前提操作2.数据准备3.创建4.保存DataFrame 二、DataFrame的操作1.printSchema2.show3.select4.filter5.groupBy(filed)6.sort(field) 三、临时表操作1.创建临时表2.通过临时表及SQL语句进行查询 四、从RDD转换…...

【大模型】LLaMA: Open and Efficient Foundation Language Models

链接&#xff1a;https://arxiv.org/pdf/2302.13971 论文&#xff1a;LLaMA: Open and Efficient Foundation Language Models Introduction 规模和效果 7B to 65B&#xff0c;LLaMA-13B 超过 GPT-3 (175B)Motivation 如何最好地缩放特定训练计算预算的数据集和模型大小&…...

聚焦AI存储,联想凌拓全力奔赴

【全球存储观察 &#xff5c; 科技热点关注】 每一个时代&#xff0c;都有每一个时代的骄傲。 在信息化时代&#xff0c;NAS文件存储肩负着非结构化数据管理与存储的重任&#xff0c;NetApp以其创新实力&#xff0c;赢得了全球存储市场的极高声誉。 在数智化时代&#xff0c;…...

ansible常用模块

一.ansible常用模块 ansible [主机or组列表] -m 模块 -a "参数"1.shell:类似于在终端上直接输入命令,支持bash特性2.command(默认模块):使用的变量需要事先定义好,不支持bash特性&#xff0c;如管道、重定向3.script: 执行脚本,支持python,shell脚本4.file:用于在被控…...

window11编译pycdc.exe

一、代码库和参考链接 在对python打包的exe文件进行反编译时&#xff0c;会使用到uncompyle6工具&#xff0c;但是这个工具只支持python3.8及以下&#xff0c;针对更高的版本的python则不能反编译。 关于反编译参考几个文章&#xff1a; Python3.9及以上Pyinstaller 反编译教…...