四川高速公路建设集团网站更改wordpress主题语言

diannao/2026/1/25 7:30:01/文章来源:
四川高速公路建设集团网站,更改wordpress主题语言,什么是网络营销评价,西安网站推广公司文章目录 前言MPU6050参数电路MPU6050框图 IIC外设框图 IIC的基本结构软件IIC实现MPU6050硬件IIC实现MPU6050 前言 在51单片机专栏中#xff0c;用过I2C通信来进行实现AT24C02的数据存储#xff1b; 里面介绍的是利用程序的编程来实现I2C的时序#xff0c;进而实现AT24C02与… 文章目录 前言MPU6050参数电路MPU6050框图 IIC外设框图 IIC的基本结构软件IIC实现MPU6050硬件IIC实现MPU6050 前言 在51单片机专栏中用过I2C通信来进行实现AT24C02的数据存储 里面介绍的是利用程序的编程来实现I2C的时序进而实现AT24C02与单片机之间的关系连接 本章将介绍使用I2C的硬件外设来实现I2C通信和介绍MPU6050利用I2C通信实现STM32对MPU6050的控制. I2C通信软件实现程序链接入口 MPU6050 MPU6050是一种集成三轴陀螺仪和三轴加速度计的六轴运动处理组件。 可以用来感知物体的旋转和加速度运动并提供相应的测量数据。 MPU6050采用微机电系统MEMS技术通过测量微小的力和振动来检测物体的运动。其内置的三轴陀螺仪可以测量绕X、Y、Z轴的角速度而三轴加速度计可以测量物体在X、Y、Z轴上的加速度。通过结合两者的数据可以获得更准确的运动信息。 MPU6050还具有一个可扩展的数字运动处理器DMP可以实现更复杂的运动处理功能。DMP可以通过主要的I2C或SPI端口输出完整的九轴运动融合数据当连接到三轴磁强计时可以获得更全面的运动信息。 MPU6050广泛应用于飞行器、机器人、游戏控制器等领域可以提供准确的姿态感知和运动跟踪功能。它的集成设计减少了封装空间和组合陀螺仪与加速度计时间轴不匹配的问题使其在各种应用中具有较高的可靠性和性能。 参数 角速度全格感测范围±250、±500、±1000、±2000°/secdps) 可追踪快速和慢速动作 加速度全格感测范围±2g、±4g、±8g、±16g 产品传输可透过最高至400kHz的IIC 16位ADC采集传感器的模拟信号量化范围-32768~32767 I2C从机地址 1101000AD00 0x68 1101001AD010x69 这里的地址是没有融入读写地址位的如果融入读写地址位那么将通过左移的方式变成110100000xD0110100010xD1。 电路 最右边的是MPU6050的芯片左下角是8针的排针左上角是一个低压差线性稳压器。 芯片包括时钟、IIC通信引脚、供电、帧同步等本章有很多是用不到的。 左下角VCC和GND是引脚供电SCL和SDA是IIC通信的引脚在芯片处SCL和SDA已经内置了两个4.7k的上拉电阻在接线时可以直接连接到GPIO口。 XCL和XDA是主机的IIC引脚目的是为了拓展芯片功能可拓展磁力计等功能。 AD0是从机地址的最低位接低电平时7位从机地址为1101000接高电平时7位从机地址就是1101001.这里默认连接上了弱下拉到低电平引脚悬空时即为低电平。倘若想变为高电平可以直接连接VCC强上拉为高电平。 INT是中断输出引脚可配置芯片内部一些事件来触发中断引脚的输出。 左上角LD0是供电的逻辑MPU6050芯片的VCC供电为2.375~3.46V属于3.3V的供电设备为了扩大供电范围设计者在电路中加入3.3V的稳压器输入端电压VCC_5V可以在3.3V到5V之间经过稳压器后即可输出3.3V的电压一旦3.3V端有电压指示灯就会亮起。 MPU6050框图 该图即为芯片的内部结构。 左上角是时钟系统有时钟输入脚和时钟输出脚。 灰色部分就是芯片的传感器分别是XYZ轴的加速度计XYZ轴的陀螺仪。且还内置一个温度传感器本质上传感器就是可变电阻所以通过ADC模数转换就可以产生数据放在数据寄存器中。我们只需要读取寄存器中的数据即可得到测量值。 最左边是用来验证芯片的好坏的当启动自测后芯片内部会模拟一个外力施加在传感器上该数据一般给的比平时大一些。可以用使能自测读取数据再使能自测读取数据最后数据差称为数据响应只要数据响应在规定范围内则表明芯片没问题。 ChargePump为电荷泵这是一种升压电路会连接一个电容。 电荷泵与电容并联时可为电容充电串联时那么电荷泵和电容一起为芯片供电提供比原来大的电压。 右边是通信接口和一些寄存器。 中断状态寄存器可以控制内部的某些事件到中断引脚的输出 FIFO是先入先出寄存器可以对数据流进行缓冲 配置寄存器可以对内部电路进行配置。 传感器寄存器也就是数据寄存器存储各传感器的数据。 工厂校准内部的传感器都进行了校准 数字运动处理器DMP这是芯片内部自带的一个姿态解算的硬件算法。 然后就是IIC通信的接口链接着STM32下面还有一些是主机的IIC通信接口。通过SIBM寄存器选择。 IIC外设 STM32内部集成了硬件I2C收发电路可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能减轻CPU的负担 支持多主机模型 支持7位/10位地址模式 支持不同的通讯速度标准速度(高达100 kHz)快速(高达400 kHz) 支持DMA 兼容SMBus协议 STM32F103C8T6 硬件I2C资源I2C1、I2C2 框图 SDA接收数据和发送数据 对于要发送的数据会从数据寄存器转移到数据移位寄存器中数据移位寄存器再通过引脚串行发送数据位 对于要接收的数据也会先放到数据移位寄存器中数据寄存器再从移位寄存器中取数据这样做的目的是为了更好的缓存数据防止有些数据会丢失。 数据寄存器可以通过写入控制寄存器对应位进行操作。 比较器和地址寄存器是从机模式使用的STM32的IIC是基于可变多主机模型设计的当STM32不通信时可作为从机可被别人召唤这时就需要一个地址。 PEC是一个数据校验模块当发送一个多数据帧时硬件可以自动执行CRC校验计算CRC是一种校验算法会根据前面这些数据进行各种数据运算会得到一个字节的校验位加在数据帧后面STM32也可以自动对数据帧进行判断如果数据在传输过程中出错CRC算法通不过硬件就会置校验错误标志位。 SCL连接着时钟控制。 SMBALEART是用于SMBus模式的不使用该模式接口不能使用。 IIC的基本结构 数据控制器控制对数据的发送和接收 时钟控制器控制对时钟的流动 再接上GPIO口最后把开关控制启用就能实现IIC通信。 软件IIC实现MPU6050 OLED代码链接入口 连接方式: 利用OLED屏幕显示MPU6050陀螺仪和加速度各轴数据 IIC.h #ifndef __I2C_H__ #define __I2C_H__void I2C_INIT(); void I2C_Start(); void I2C_Stop(); void I2C_SendByte(uint8_t Byte); uint8_t I2C_ReceiveByte(); void I2C_SendAck(uint8_t AckBit); uint8_t I2C_ReceiveAck();#endif IIC.c #include stm32f10x.h // Device header #include Delay.hvoid I2C_W_SCL(uint8_t BitValue) {GPIO_WriteBit(GPIOB,GPIO_Pin_10,(BitAction)BitValue);Delay_us(10); //延迟是让函数有时间反应 }void I2C_W_SDA(uint8_t BitValue) {GPIO_WriteBit(GPIOB,GPIO_Pin_11,(BitAction)BitValue);Delay_us(10); //延迟是让函数有时间反应 }uint8_t I2C_R_SDA() {uint8_t BitValue;BitValueGPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11);Delay_us(10);return BitValue; }void I2C_INIT() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_OD; //开漏弱上拉输出GPIO_InitStructure.GPIO_Pin GPIO_Pin_10 | GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOB, GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_10 | GPIO_Pin_11); }void I2C_Start() {I2C_W_SDA(1);I2C_W_SCL(1);I2C_W_SDA(0);I2C_W_SCL(0); }void I2C_Stop() {I2C_W_SDA(0);I2C_W_SCL(1);I2C_W_SDA(1); }void I2C_SendByte(uint8_t Byte) {uint8_t i;for(i0;i8;i){I2C_W_SDA(Byte(0x80i));//高电平锁存从机读取I2C_W_SCL(1);I2C_W_SCL(0);} }uint8_t I2C_ReceiveByte() {uint8_t i,Byte0x00;I2C_W_SDA(1); //主机释放SDAfor(i0;i8;i){I2C_W_SCL(1); //SCL高电平期间主机读取从机发送的数据if(I2C_R_SDA()1){Byte|(0x80i);}I2C_W_SCL(0);}return Byte; }void I2C_SendAck(uint8_t AckBit) {I2C_W_SDA(AckBit);//高电平锁存从机读取I2C_W_SCL(1);I2C_W_SCL(0); }uint8_t I2C_ReceiveAck() {uint8_t AckBit;I2C_W_SDA(1); //主机释放SDAI2C_W_SCL(1); //SCL高电平期间主机读取从机发送的数据AckBitI2C_R_SDA(); I2C_W_SCL(0);return AckBit; }这部分实现的是IIC的六个主要部分的代码与51单片机上的时序基本一致在STM32上是利用GPIO口来实现高低电平的输入输出。 输出模式用开漏输出当输出低电平时电路会强下拉变为低电平 当输出为高电平时为弱上拉一旦有下拉电平输入就会变成低电平。 该模式不止可以实现输出也可以实现对IIC的接收当输入为1时在SCL高电平时STM32会读取当输入为0时在SCL高电平STM32会读取. MPU6050_tag.h #ifndef __MPU6050_REG_H #define __MPU6050_REG_H#define MPU6050_SMPLRT_DIV 0x19 #define MPU6050_CONFIG 0x1A #define MPU6050_GYRO_CONFIG 0x1B #define MPU6050_ACCEL_CONFIG 0x1C#define MPU6050_ACCEL_XOUT_H 0x3B #define MPU6050_ACCEL_XOUT_L 0x3C #define MPU6050_ACCEL_YOUT_H 0x3D #define MPU6050_ACCEL_YOUT_L 0x3E #define MPU6050_ACCEL_ZOUT_H 0x3F #define MPU6050_ACCEL_ZOUT_L 0x40 #define MPU6050_TEMP_OUT_H 0x41 #define MPU6050_TEMP_OUT_L 0x42 #define MPU6050_GYRO_XOUT_H 0x43 #define MPU6050_GYRO_XOUT_L 0x44 #define MPU6050_GYRO_YOUT_H 0x45 #define MPU6050_GYRO_YOUT_L 0x46 #define MPU6050_GYRO_ZOUT_H 0x47 #define MPU6050_GYRO_ZOUT_L 0x48#define MPU6050_PWR_MGMT_1 0x6B #define MPU6050_PWR_MGMT_2 0x6C #define MPU6050_WHO_AM_I 0x75#endif MPU6050.h #ifndef __MPU6050_H__ #define __MPU6050_H__void MPU6050_Init(); uint8_t MPU6050_GetID(); void MPU6050_GetData(int16_t* AccX,int16_t* AccY,int16_t* AccZ,int16_t* GyroX,int16_t* GyroY,int16_t* GyroZ);#endif MPU6050.c #include stm32f10x.h // Device header #include I2C.h #include MPU6050_rag.h#define MPU6050_ADDRESS 0xD0void MPU6050_WriteReg(uint8_t RegAddress,uint8_t Data) {I2C_Start();I2C_SendByte(MPU6050_ADDRESS);I2C_ReceiveAck();I2C_SendByte(RegAddress);I2C_ReceiveAck();I2C_SendByte(Data);I2C_ReceiveAck();I2C_Stop();}uint8_t MPU6050_ReadReg(uint8_t RegAddress) {uint8_t Data;I2C_Start();I2C_SendByte(MPU6050_ADDRESS);I2C_ReceiveAck();I2C_SendByte(RegAddress);I2C_ReceiveAck();I2C_Start();I2C_SendByte(MPU6050_ADDRESS|0x01);I2C_ReceiveAck();DataI2C_ReceiveByte();I2C_SendAck(1); //主机不应答主机收回主动权让从机停止发送数据字节I2C_Stop();return Data;}void MPU6050_Init() {I2C_INIT();MPU6050_WriteReg(MPU6050_PWR_MGMT_1,0x01); //解除睡眠选择陀螺仪时钟MPU6050_WriteReg(MPU6050_PWR_MGMT_1,0x00); //6个轴均不待机MPU6050_WriteReg(MPU6050_SMPLRT_DIV,0x09); //采样分频为10MPU6050_WriteReg(MPU6050_CONFIG, 0x06); //滤波参数给最大MPU6050_WriteReg(MPU6050_GYRO_CONFIG, 0x18); //最大陀螺仪量程MPU6050_WriteReg(MPU6050_ACCEL_CONFIG, 0x18); //最大加速度量程}uint8_t MPU6050_GetID() {return MPU6050_ReadReg(MPU6050_WHO_AM_I); }void MPU6050_GetData(int16_t* AccX,int16_t* AccY,int16_t* AccZ,int16_t* GyroX,int16_t* GyroY,int16_t* GyroZ) {uint8_t DataH,DataL;DataHMPU6050_ReadReg(MPU6050_ACCEL_XOUT_H);DataLMPU6050_ReadReg(MPU6050_ACCEL_XOUT_L);*AccX(DataH8)|DataL;DataHMPU6050_ReadReg(MPU6050_ACCEL_YOUT_H);DataLMPU6050_ReadReg(MPU6050_ACCEL_YOUT_L);*AccY(DataH8)|DataL;DataHMPU6050_ReadReg(MPU6050_ACCEL_ZOUT_H);DataLMPU6050_ReadReg(MPU6050_ACCEL_ZOUT_L);*AccZ(DataH8)|DataL;DataH MPU6050_ReadReg(MPU6050_GYRO_XOUT_H);DataL MPU6050_ReadReg(MPU6050_GYRO_XOUT_L);*GyroX (DataH 8) | DataL;DataH MPU6050_ReadReg(MPU6050_GYRO_YOUT_H);DataL MPU6050_ReadReg(MPU6050_GYRO_YOUT_L);*GyroY (DataH 8) | DataL;DataH MPU6050_ReadReg(MPU6050_GYRO_ZOUT_H);DataL MPU6050_ReadReg(MPU6050_GYRO_ZOUT_L);*GyroZ (DataH 8) | DataL;}第一个代码块是对MPU6050一些寄存器地址的宏定义主要有采样分频寄存器、陀螺仪配置寄存器、加速度配置寄存器、加速度数据寄存器、陀螺仪数据寄存器、状态寄存器1/2、地址寄存器。 对于MPU6050的读写采用了IIC通信时序实现 写时序 读时序 数据存储器为16位存储 main.c #include stm32f10x.h // Device header #include Delay.h #include OLED.h #include MPU6050.huint8_t ID; int16_t AX,AY,AZ,GX,GY,GZ;int main() {OLED_Init();MPU6050_Init();OLED_ShowString(1,1,ID:);IDMPU6050_GetID();OLED_ShowHexNum(1,4,ID,2);while(1){MPU6050_GetData(AX,AY,AZ,GX,GY,GZ);OLED_ShowSignedNum(2,1,AX,5);OLED_ShowSignedNum(3,1,AY,5);OLED_ShowSignedNum(4,1,AZ,5);OLED_ShowSignedNum(2,8,GX,5);OLED_ShowSignedNum(3,8,GY,5);OLED_ShowSignedNum(4,8,GZ,5);} } 硬件IIC实现MPU6050 连接方式与软件的保持一致。由于是硬件外设需要注意引脚有没有支持该IIC功能。 对于硬件外设我们只需要对软件实现部分的IIC通信进行修改。 MPU6050.c #include stm32f10x.h // Device header #include MPU6050_rag.h#define MPU6050_ADDRESS 0xD0void MPU6050_WaitEvent(I2C_TypeDef* I2Cx, uint32_t I2C_EVENT) {uint32_t Timeout;Timeout 10000;while (I2C_CheckEvent(I2Cx, I2C_EVENT) ! SUCCESS){Timeout --;if (Timeout 0){break;}} }void MPU6050_WriteReg(uint8_t RegAddress,uint8_t Data) {I2C_GenerateSTART(I2C2,ENABLE); //SMPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_MODE_SELECT); //EV5I2C_Send7bitAddress(I2C2,MPU6050_ADDRESS,I2C_Direction_Transmitter);MPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED); //EV6I2C_SendData(I2C2,RegAddress);MPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_BYTE_TRANSMITTING); //EV8I2C_SendData(I2C2,Data);MPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_BYTE_TRANSMITTED); //EV8_2I2C_GenerateSTOP(I2C2,ENABLE); }uint8_t MPU6050_ReadReg(uint8_t RegAddress) {uint8_t Data;I2C_GenerateSTART(I2C2,ENABLE); //SMPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_MODE_SELECT); //EV5I2C_Send7bitAddress(I2C2,MPU6050_ADDRESS,I2C_Direction_Transmitter); MPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED); //EV6I2C_SendData(I2C2,RegAddress); MPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_BYTE_TRANSMITTED);I2C_GenerateSTART(I2C2,ENABLE); //SMPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_MODE_SELECT); //EV5I2C_Send7bitAddress(I2C2,MPU6050_ADDRESS,I2C_Direction_Receiver);MPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED); //EV6//EV7_1I2C_AcknowledgeConfig(I2C2,DISABLE);//应答位禁用 I2C_GenerateSTOP(I2C2,ENABLE); //PMPU6050_WaitEvent(I2C2,I2C_EVENT_MASTER_BYTE_RECEIVED); //EV7DataI2C_ReceiveData(I2C2);I2C_AcknowledgeConfig(I2C2,ENABLE); //应答位启用return Data;}void MPU6050_Init() {RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_ModeGPIO_Mode_AF_OD; //复用开漏输出GPIO_InitStructure.GPIO_PinGPIO_Pin_10|GPIO_Pin_11;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOB,GPIO_InitStructure);I2C_InitTypeDef I2C_InitStructure;I2C_InitStructure.I2C_AckI2C_Ack_Enable; //启用应答位I2C_InitStructure.I2C_AcknowledgedAddressI2C_AcknowledgedAddress_7bit; //确认地址模式I2C_InitStructure.I2C_ClockSpeed50000; //时钟频率I2C_InitStructure.I2C_DutyCycleI2C_DutyCycle_2; //占空比I2C_InitStructure.I2C_ModeI2C_Mode_I2C; //模式选择I2C_InitStructure.I2C_OwnAddress10x00;I2C_Init(I2C2,I2C_InitStructure);I2C_Cmd(I2C2,ENABLE);MPU6050_WriteReg(MPU6050_PWR_MGMT_1,0x01); //解除睡眠选择陀螺仪时钟MPU6050_WriteReg(MPU6050_PWR_MGMT_1,0x00); //6个轴均不待机MPU6050_WriteReg(MPU6050_SMPLRT_DIV,0x09); //采样分频为10MPU6050_WriteReg(MPU6050_CONFIG, 0x06); //滤波参数给最大MPU6050_WriteReg(MPU6050_GYRO_CONFIG, 0x18); //最大陀螺仪量程MPU6050_WriteReg(MPU6050_ACCEL_CONFIG, 0x18); //最大加速度量程}uint8_t MPU6050_GetID() {return MPU6050_ReadReg(MPU6050_WHO_AM_I); }void MPU6050_GetData(int16_t* AccX,int16_t* AccY,int16_t* AccZ,int16_t* GyroX,int16_t* GyroY,int16_t* GyroZ) {uint8_t DataH,DataL;DataHMPU6050_ReadReg(MPU6050_ACCEL_XOUT_H);DataLMPU6050_ReadReg(MPU6050_ACCEL_XOUT_L);*AccX(DataH8)|DataL;DataHMPU6050_ReadReg(MPU6050_ACCEL_YOUT_H);DataLMPU6050_ReadReg(MPU6050_ACCEL_YOUT_L);*AccY(DataH8)|DataL;DataHMPU6050_ReadReg(MPU6050_ACCEL_ZOUT_H);DataLMPU6050_ReadReg(MPU6050_ACCEL_ZOUT_L);*AccZ(DataH8)|DataL;DataH MPU6050_ReadReg(MPU6050_GYRO_XOUT_H);DataL MPU6050_ReadReg(MPU6050_GYRO_XOUT_L);*GyroX (DataH 8) | DataL;DataH MPU6050_ReadReg(MPU6050_GYRO_YOUT_H);DataL MPU6050_ReadReg(MPU6050_GYRO_YOUT_L);*GyroY (DataH 8) | DataL;DataH MPU6050_ReadReg(MPU6050_GYRO_ZOUT_H);DataL MPU6050_ReadReg(MPU6050_GYRO_ZOUT_L);*GyroZ (DataH 8) | DataL;} 这里的初始化GPIO引脚需要用到复用模式因为IIC外设是片上外设 接收数据和发送数据要根据STM32的要求 根据响应事件来确定事件的产生效果所以会在每条条件后执行响应事件。 对于所给的库函数有些事件EVX没有提供一些可以省略一些需要对程序进行一定的整改。 如上面的EV8_1,确保数据寄存器和移位寄存器为空在我们一开始调用时就为空所以可以对它进行忽略。 接收数据的EV7_1描述到设置应答位为无应答和Stop请求对于连续接收的数据需要在最后一个数据之前进行EV7_1响应在进行EV7_1响应时因为最后一个数据会先放到移位寄存器中最后第二个会在数据寄存器中。需要提前STOP请求表示接收结束。 而在程序中我们只是对一个数据进行接收并没有连续接收数据但道理一样需要提前STOP请求。而在库函数中刚好没有对应的函数需要自己禁用ACK和STOP请求。 上软下硬 这时软件和硬件的波形对比会发现在应答位硬件会更快应答只要到到SCL下降沿和SDA上升沿就会产生应答。这就是硬件的优势 在软件中由于是同步时序对于时间没有严格要求只要在对应时间完成对应的电平操作即可所以IIC通信才可以实现软件编程。而软件编程相对来说也比较容易理解。

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

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

相关文章

网站企业建设公司排名空间设计大师

2018年第七届数学建模国际赛小美赛 C题 共享单车对城市交通的影响 原题再现: 共享自行车改变了许多城市的交通状况,许多大城市引入共享自行车来解决交通问题。我们需要定量评估共享自行车对城市交通的影响,以及相关的经济、社会和环境影响。…

深圳网站设计比较好的公司上海市住房和城乡建设厅

在所有关于C#事件机制的介绍中,我更倾向于发布者/订阅者(Publisher/Subscriber)这种描述。理解事件机制并不是一件容易的事情,它所涉及的思想值得我们好好去研究。 本文资源来自《C#与.NET技术平台实战演练》——中国青年出版社 …

网站建设流程分几步个人互动网站

http://blog.csdn.net/chenjinyu_tang/article/details/8136841 好久没有学习python了,应为工作的需要,再次拾起python,唤起记忆。 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwar…

长沙品牌网站建设实力强去哪个网站可以接单做ps等等

C# 9 新特性 —— 补充篇Intro前面我们分别介绍了一些 C# 9 中的新特性,还有一些我觉得需要了解一下的新特性,写一篇作为补充。Top-Level Statements在以往的代码里,一个应用程序必须要有 Main 方法才能运行,从 C# 9 开始&#xf…

如何建网站模板小型网站建设方案

我想创建一个具有95%“精确”置信椭圆的二元正态分布的散点图.library(mvtnorm)library(ggplot2)set.seed(1)n c95 rho Sigma 我从双变量法线生成了1000个观测值,平均值为零,方差西格玛x z for(i in 1:n){z[i] p95[i] }我们可以使用stat_ellipse轻松地在生成数据的散…

门户网站建设的意义latex写wordpress

Java中线程的状态分为6种: 1.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 2.运行(RUNNABLE):Java线程中将就绪(READY)和运行中(RUNNING)两种状态笼统的称为“运行”…

网站建设拿什么框架海曙区做网站

解决数据库中的中文数据在页面显示乱码的问题 在连接的$connectionInfo中设置"CharacterSet" > "UTF-8",指定编码方式即可 $connectionInfo array("UID">$uid, "PWD">$pwd, "Database">$database…

个人微信公众号怎么做微网站网站建设程序的步骤过程

15. 小部件Menu “下拉菜单”是一种流行的方式 为用户提供多种选择,但占用 应用程序表面的最小空间,当 用户没有做出选择。 菜单按钮是 始终显示在应用程序上。 菜单是选项列表 仅在用户单击 菜单按钮。 要选择一个选项,用户可以将鼠标从 菜…

豪圣建设项目管理网站山东网站建设优化

接口测试 什么是接口 接口是两个独立部件共享信息的边界,测试中常说的接口大部分是web接口。web接口是遵循了http或者https协议的URL。 数据的流转过程 由客户端通过接口将数据发送给服务器。服务器收到数据之后,取出想要的数据,拼装成一…

哪些网站做装修wordpress下载防止盗链

2021牛客暑期多校训练营5 题号题目知识点AAway from CollegeBBoxes概率CCheating and StealingDDouble Strings线性dpEEert EsiwtibFFinding PointsGGreater Integer, Better LCMHHolding Two签到IInterval QueriesJJewels最小权匹配KKing of Range尺取法

php下载站源码长沙专业做网络的公司

C使用ffpython嵌入和扩展python(python2和python3)摘要:在服务器编程中,经常会用到python脚本技术。Python是最流行的脚本之一,并且python拥有定义良好的C API接口,同时又有丰富的文档,与C结合非常的适合。…

做食品那些网站好网站如何做的看起来高大上

创建一个简单的iOS天气应用程序涉及到多个步骤,包括设置项目、编写代码和使用外部API。由于篇幅限制,我将提供一个基础的示例,这个例子会展示如何创建一个简单的UI,获取用户的当前位置,并从OpenWeatherMap API获取天气…

网站源码在线查询北京网站搭建费用

在学习和使用python的过程中,少不了要与python idle打交道。但使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?我在stackoverflow看到这样两种答案:1.在shell中输入1 import os 2 os.system(cls) 这种方法只能在windows系统中cmd模式下的…

网站项目功能需求清单滑县网站建设策划

今日学习的文章链接和视频链接 leetcode题目地址:383. 赎金信 代码随想录题解地址:代码随想录 题目简介 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返…

做淘宝客网站有什么服务器上哪儿找做网站

今天给大家分享一个微软官方的好东西:Channel。前言今天给大家分享一个微软官方的生产者/消费者方案的特性解决:Channel。Channel在System.Threading.Channels命名空间下,Core 2.1使用时,需要从Nuget上安装。% dotnet add package…

中国石油天然气第六建设公司网站a5站长网网站交易

文章目录 为不同的场景设计合适的缓存策略1. 缓存是什么2. 缓存的场景3. 缓存的策略4. 缓存位置5. 缓存实现的要点6. 注意问题7. 使用的组件8. 内存缓存和分布式缓存区别 总结 为不同的场景设计合适的缓存策略 1. 缓存是什么 缓存是计算结果的“临时”存储和重复使用缓存本质…

网站设计需求方案wordpress注册新用户

那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂。 委托的使用 例一: 什么是委托? 个人理解:用来传递方法的类型。(用来传递数字的类型有int、float、double,用…

淮南网站建设服务中国建设银行太原招聘信息网站

JAVA中断线程的方法 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃,使用它们是极端不安全的! 现在,如果你要安全有效地终止一个线程,应该采用以下这些方法&a…

广告公司企业网站模板优化 导航网站

目录 背景 技术简介 系统简介 界面预览 背景 随着互联网的广泛渗透和进步,基于网络技术的KTV点歌系统迅速壮大,其发展始终围绕用户的实际需求展开。通过深入洞察用户的需求,开发出高度定制的管理平台,利用网络的便捷性对系统…

杭州网站建设seo怎么查网站哪里做的

我们公司在用nginx的userid模块作为简单的用户请求追踪使用。这个模块其实并不能真正记录用户的请求状态,只能作为一个辅助使用。但是在一些场景下会有一些异常。下面我们简单介绍一下这个模块到底做了什么。 userid 模块简介 官网说明文档 ngx_http_userid_modul…