STM32硬件接口I2C应用(基于MP6050)
目录
概述
1 STM32Cube控制配置I2C
1.1 I2C参数配置
1.2 使用STM32Cube产生工程
2 HAL库函数介绍
2.1 初始化函数
2.2 写数据函数
2.3 读数据函数
3 认识MP6050
3.1 MP6050功能介绍
3.2 加速计测量寄存器
编辑3.3 温度计量寄存器
3.4 陀螺仪测量寄存器
4 MP6050驱动程序实现
4.1 驱动函数实现
4.2 完整驱动代码
5 测试
6 逻辑分析仪捕捉波形
概述
本文主要介绍STM32F4的内部I2C接口的使用方法,包括使用STM32Cube配置i2c接口函数,还介绍了STM32 HAL库中的接口函数,为了验证接口函数的是否能够正常工作,还使用mp6050
作为device,以I2C接口作为通信接口,以实现该芯片数据的读写操作。
1 STM32Cube控制配置I2C
STM32CubeMX 版本: 6.11
HAL库版本: STM32Cube_FW_F4_V1.27.1
1.1 I2C参数配置
STM32F407 的标准I2C接口最大支持100K工作频率,笔者选择最大工作频100k,以配置I2C的参数。

I2C使用的GPIO接口如下:

使用MCU类型和HAL库的版本
1.2 使用STM32Cube产生工程
在配置完成项目后,点击GENERATE生成项目,打开项目后项目目录如下,和I2C相关的代码如下:
代码第40行:选择I2C2作为硬件接口
代码第41行:I2C通信速率为100K
代码第44行:定义地址位7bit

2 HAL库函数介绍
STM32 HAL库函数数量很多,本文仅介绍笔者使用的一些函数接口。其他函数在使用的时候在具体研究,而不许把每个函数搞清楚才去应用。
2.1 初始化函数
函数原型:
HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c);
参数介绍
hi2c: 指向I2C_HandleTypeDef结构体的指针,该结构体包含指定I2C的配置信息。
一个使用案例: 如果已经初始化完成hi2c结构,初始化时,直接调用该结构体即可。

2.2 写数据函数
函数原型:
HAL_StatusTypeDef HAL_I2C_Mem_Write( I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
参数介绍:
hi2c: 指向I2C_HandleTypeDef结构体的指针,该结构体包含指定I2C的配置信息。
DevAddress: 目标设备地址:设备的7位地址值在调用接口之前,必须将数据表向左移动
MemAddress:内存地址
MemAddSize:内存地址大小
pData: 写数据指针
Size: 写数据大小
Timeout: 写数据超时时间
2.3 读数据函数
函数原型:
HAL_StatusTypeDef HAL_I2C_Mem_Read( I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
参数介绍:
hi2c: 指向I2C_HandleTypeDef结构体的指针,该结构体包含指定I2C的配置信息。
DevAddress: 目标设备地址:设备的7位地址值在调用接口之前,必须将数据表向左移动
MemAddress:内存地址
MemAddSize:内存地址大小
pData: 读数据指针
Size: 读数据大小
Timeout: 读数据超时时间
3 认识MP6050
3.1 MP6050功能介绍
™ MPU-6000™ 和MPU-6050™, 统称为MPU-60X0™ 或MPU™.MPU设备提供了世界上第一个集成的6轴运动处理器解决方案,消除了与离散解决方案相关的封装级陀螺仪和加速度计交叉轴未对准。这个该设备将同一硅芯片上的3轴陀螺仪和3轴加速度计与车载数字运动处理器™ (DMP)™) 温度单元:能够处理复杂的9轴传感器融合算法使用经过现场验证的专有MotionFusion™ 发动机MPU-6000和MPU-6050的集成9轴MotionFusion算法可访问外部磁力计或通过辅助主I2C总线的其他传感器,允许设备收集全套传感器数据而不需要系统处理器的干预。这些设备采用相同的4x4x0.9 mm QFN与当前MPU-3000一样的占地面积和引脚™ 集成3轴陀螺仪家族,提供了一个简单的升级路径并便于在已经空间受限的电路板上放置。
对于快速和慢速运动的精确跟踪,MPU-60X0具有用户可编程功能陀螺仪满刻度范围为±250、±500、±1000和±2000°/秒(dps)。这些零件还具有用户可编程的加速度计满量程范围,分别为±2g、±4g、±8g和±16g。MPU-6000系列由两部分组成,即MPU-6000和MPU-6050。这些部件与我会处理好的。
MPU-6050支持高达400kHz的I2C通信,并具有定义其接口电压电平的VLOGIC引脚;MPU-6000还支持高达20MHz的SPI到I2C,并且具有单个电源引脚VDD,VDD既是设备的逻辑参考电源,也是模拟电源供应零件。有关MPU-60X0设备的更多详细信息,请参阅“MPU-6000和MPU-6050产品规范”。
3.2 加速计测量寄存器
寄存器59至64–加速计测量:ACCEL_XOUT_H、ACCEL_QUEUT_L、ACCE_YOUT_H,ACCEL_YOUT_L,ACCE_ZOUT_H和ACCEL_ZOUT_L

这些寄存器存储最新的加速度计测量值。加速度计测量值以中定义的采样率写入这些寄存器寄存器25。加速度计测量寄存器与温度测量寄存器一起,陀螺仪测量寄存器和外部传感器数据寄存器由两组寄存器:内部寄存器集和面向用户的读取寄存器集。加速度计传感器内部寄存器组中的数据总是在采样时更新速度同时,面向用户的读取寄存器集复制内部寄存器集的数据值每当串行接口空闲时。这保证了传感器寄存器的突发读取来自相同采样时刻的测量。请注意,如果不使用突发读取,则用户负责确保一组单字节读取对应于单个采样瞬间检查数据就绪中断。每个16位加速度计测量都具有在ACCEL_FS(寄存器28)中定义的满刻度。对于每个满刻度设置,加速度计ACCEL_xOUT中每个LSB的灵敏度如表所示在下面:

3.3 温度计量寄存器
寄存器65 and 66: TEMP_OUT_H and TEMP_OUT_L
这些寄存器存储最新的温度传感器测量值。温度测量值以寄存器中定义的采样率写入这些寄存器
25.这些温度测量寄存器与加速度计测量寄存器一起,陀螺仪测量寄存器和外部传感器数据寄存器由两组寄存器:内部寄存器集和面向用户的读取寄存器集。温度传感器内部寄存器组中的数据始终以采样率进行更新。同时,面向用户的读取寄存器集复制内部寄存器集的数据值每当串行接口空闲时。这保证了传感器寄存器的突发读取来自相同采样时刻的测量。请注意,如果不使用突发读取,则用户负责确保一组单字节读取对应于单个采样瞬间检查数据就绪中断。温度传感器的比例因子和偏移可在电气规格表中找到。
3.4 陀螺仪测量寄存器
寄存器67至72——陀螺仪测量:GYRO_XOUT_H、GYRO_XOUT_L、GYRO_YOUT_H,GYRO_YOUT_L,GYRO_ZOUT_H和GYRO_ ZOUT_L

这些寄存器存储最新的陀螺仪测量值。陀螺仪测量值以寄存器中定义的采样率写入这些寄存器
25.这些陀螺仪测量寄存器与加速度计测量寄存器一起,温度测量寄存器和外部传感器数据寄存器由两组寄存器:内部寄存器集和面向用户的读取寄存器集。陀螺仪传感器内部寄存器组中的数据始终以采样率进行更新。同时,面向用户的读取寄存器集复制内部寄存器集的数据值每当串行接口空闲时。这保证了传感器寄存器的突发读取来自相同采样时刻的测量。请注意,如果不使用突发读取,则用户负责确保一组单字节读取对应于单个采样瞬间检查数据就绪中断。每个16位陀螺仪测量都具有FS_SEL(寄存器27)中定义的满刻度。对于每满刻度设置,GYRO_xOUT中每个LSB的陀螺仪灵敏度如下表所示:

4 MP6050驱动程序实现
4.1 驱动函数实现
1)写寄存器函数
代码第25行: 调用HAL_I2C_Mem_Write实现写寄存器功能

2)读寄存器函数
代码第37行: 调用HAL_I2C_Mem_Read实现读寄存器功能

4.2 完整驱动代码
1)创建mp6050.c文件,编写如下代码
/* USER CODE BEGIN Header */
/**
******************************************************************************
* File Name : mpu6050.c
* Description : I2C drive based on STM32F4
* STM32 HAL library ver: STM32Cube_FW_F4_V1.27.1
*
******************************************************************************
* @attention
*
* Copyright (c) 2024~2029 mingfei.tang
* All rights reserved.
*
*************************************************************************
*/
/* USER CODE END Header */
#include "mpu6050.h"MPU6050_T g_tMPU6050;static uint8_t mpu6050_WeReg( uint16_t regAdd, uint8_t *pData, uint16_t Size )
{HAL_StatusTypeDef status;status = HAL_I2C_Mem_Write( &hi2c2, MPU6050_SLAVE_ADDRESS, regAdd, I2C_MEMADD_SIZE_8BIT, pData, Size, 1000);if( status == HAL_OK)return MPU6050_OK;elsereturn MPU6050_ERROR;
}static uint8_t mpu6050_RdReg( uint16_t regAdd, uint8_t *pData, uint16_t Size )
{HAL_StatusTypeDef status;status = HAL_I2C_Mem_Read( &hi2c2, MPU6050_SLAVE_ADDRESS, regAdd, I2C_MEMADD_SIZE_8BIT, pData, Size, 1000);if( status == HAL_OK)return MPU6050_OK;elsereturn MPU6050_ERROR;
}void mpu6050_Init(void)
{uint8_t cmd;cmd = 0x00;mpu6050_WeReg(PWR_MGMT_1, &cmd,1); //解除休眠状态cmd = 0x07;mpu6050_WeReg(SMPLRT_DIV, &cmd,1);cmd = 0x06;mpu6050_WeReg(CONFIG, &cmd,1);cmd = 0xE8;mpu6050_WeReg(GYRO_CONFIG, &cmd,1);cmd = 0x01;mpu6050_WeReg(ACCEL_CONFIG, &cmd,1);
}void mpu6050_ReadData(void)
{uint8_t ucReadBuf[14];mpu6050_RdReg( ACCEL_XOUT_H, ucReadBuf,14);/* 将读出的数据保存到全局结构体变量 */g_tMPU6050.Accel_X = (ucReadBuf[0] << 8) + ucReadBuf[1];g_tMPU6050.Accel_Y = (ucReadBuf[2] << 8) + ucReadBuf[3];g_tMPU6050.Accel_Z = (ucReadBuf[4] << 8) + ucReadBuf[5];g_tMPU6050.Temp = (int16_t)((ucReadBuf[6] << 8) + ucReadBuf[7]);g_tMPU6050.GYRO_X = (ucReadBuf[8] << 8) + ucReadBuf[9];g_tMPU6050.GYRO_Y = (ucReadBuf[10] << 8) + ucReadBuf[11];g_tMPU6050.GYRO_Z = (ucReadBuf[12] << 8) + ucReadBuf[13];
}void mpu6050_test( void )
{mpu6050_Init();while(1){HAL_Delay(1000);mpu6050_ReadData();{printf("AX=%6d,AY=%6d,AZ=%6d,",g_tMPU6050.Accel_X,g_tMPU6050.Accel_Y,g_tMPU6050.Accel_Z);printf("GX=%6d,GY=%6d,GZ=%6d,T=%6d \r",g_tMPU6050.GYRO_X,g_tMPU6050.GYRO_Y,g_tMPU6050.GYRO_Z,g_tMPU6050.Temp); }}
}/* End of this file */
2)创建mp6050.h,编写如下代码
/* USER CODE BEGIN Header */
/********************************************************************************* File Name : mpu9050.h* Description : I2C drive based on STM32F4* ******************************************************************************* @attention** Copyright (c) 2024~2029 mingfei.tang* All rights reserved.***************************************************************************/
/* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MPU6050_H
#define __MPU6050_H#ifdef __cplusplusextern "C" {
#endif#include "stdio.h"
#include "main.h"#define MPU6050_OK 1
#define MPU6050_ERROR 0#define bsp_DelayMS HAL_Delay#define MPU6050_SLAVE_ADDRESS 0xD0 /* I2C从机地址 *///****************************************
// 定义MPU6050内部地址
//****************************************
#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)
#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)
#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)#define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40#define TEMP_OUT_H 0x41
#define TEMP_OUT_L 0x42#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)
#define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读)typedef struct
{int16_t Accel_X;int16_t Accel_Y;int16_t Accel_Z;int16_t Temp;int16_t GYRO_X;int16_t GYRO_Y;int16_t GYRO_Z;
}MPU6050_T;extern MPU6050_T g_tMPU6050;void mpu6050_test( void );#ifdef __cplusplus
}
#endif#endif /*__MPU6050_H */
5 测试
1)编写测试代码
void mpu6050_test( void )
{mpu6050_Init();while(1){HAL_Delay(1000);mpu6050_ReadData();{printf("AX=%6d,AY=%6d,AZ=%6d,",g_tMPU6050.Accel_X,g_tMPU6050.Accel_Y,g_tMPU6050.Accel_Z);printf("GX=%6d,GY=%6d,GZ=%6d,T=%6d \r",g_tMPU6050.GYRO_X,g_tMPU6050.GYRO_Y,g_tMPU6050.GYRO_Z,g_tMPU6050.Temp); }}
}
2)编写代码,并下载到板卡中,运行代码

6 逻辑分析仪捕捉波形
读取数据的波形


相关文章:
STM32硬件接口I2C应用(基于MP6050)
目录 概述 1 STM32Cube控制配置I2C 1.1 I2C参数配置 1.2 使用STM32Cube产生工程 2 HAL库函数介绍 2.1 初始化函数 2.2 写数据函数 2.3 读数据函数 3 认识MP6050 3.1 MP6050功能介绍 3.2 加速计测量寄存器 编辑3.3 温度计量寄存器 3.4 陀螺仪测量寄存器 4 MP60…...
基于JSP的贝儿米幼儿教育管理系统
开头语: 你好呀,我是计算机学长猫哥!如果您对本系统感兴趣或者有相关需求,文末可以找到我的联系方式。 开发语言: Java 数据库: MySQL 技术: JSP技术 工具: IDEA/Eclipse、…...
数字化与文化交融,树莓集团助力园区文化升级
树莓集团在产业园运营领域建设了特色空间布局,包括产业实训基地、产业办公中心、业务资源平台、产学研中心、数字资产空间、双创孵化空间、产业实验室和人才项目转化中心等八大板块,共同构建了一个全面而深入的产业支撑体系,为园区文化建设提…...
【原创课程】如何制作安装板
具体步骤如下: 第一步:新建页类型为“安装板布局图(交互式)”并修改页描述为“安装板布局图”。 第二步:新建安装板 第三步:设置图纸上符号元件的部件,双击符号,弹出常规设备窗口,点击部件进行选择 第四步:打开2D安装板导航器,将图纸中的设备拖拽到安装板上 第五步…...
简单聊聊【java.util.Stream】,更新中
public class Main {public static void main(String[] args) {List<Integer> numbers Arrays.asList(1, 2, 3, 4, 5, 6); // 原始容器:java.util.Arrays.ArrayList#ArrayList// 创建一个 Stream,过滤出偶数,并打印它们numbers.str…...
GIS之arcgis系列07:conda环境下安装arcpy环境
首先将python27环境下的“Desktop10.8.pth”拷贝到anaconda环境下。 路径如下(仅参考): C:\Python27\ArcGIS10.8\Lib\site-packages\Desktop10.8.pth D:\Anaconda\Lib\site-packages 在anaconda prompt中穿创建一个新环境 conda create -…...
容器运行nslookup提示bash: nslookup: command not found【笔记】
在容器中提示bash: nslookup: command not found,表示容器中没有安装nslookup命令。 可以通过以下命令安装nslookup: 对于基于Debian/Ubuntu的容器,使用以下命令: apt-get update apt-get install -y dnsutils对于基于CentOS/R…...
解析 Spring 框架中的三种 BeanName 生成策略
在 Spring 框架中,定义 Bean 时不一定需要指定名称,Spring 会智能生成默认名称。本文将介绍 Spring 的三种 BeanName 生成器,包括在 XML 配置、Java 注解和组件扫描中使用的情况,并解释它们如何自动创建和管理 Bean 名称。 1. Be…...
细说ARM MCU的串口接收数据的实现过程
目录 一、硬件及工程 1、硬件 2、软件目的 3、创建.ioc工程 二、 代码修改 1、串口初始化函数MX_USART2_UART_Init() (1)MX_USART2_UART_Init()串口参数初始化函数 (2)HAL_UART_MspInit()串口功能模块初始化函数 2、串口…...
000-基于sklearn的机器学习入门:工作环境搭建与配置
本专栏将介绍基于Scikit-learn(简称sklearn)的机器学习入门知识。包括但不一定限于,机器学习基本知识、sklearn库简介,基于Sklearn库的机器学习实践。 这是本专栏的第000篇,将介绍如何安装和配置sklearn环境,不仅包括Sklearn库的…...
就业班 第四阶段(k8s) 2401--6.5 day3 Yaml语法解析+钩子函数
Yaml语法解析 今天学的都是在pod里面操作的 格式 这个文件要创建的资源对象是什么 kind: Pod 这个资源对象所在的api版本是什么 apiVersion: v1 元数据 metadata: 对这个pod中的镜像的描述 spec: 字典无序 同一级可以调换顺序 :比如kind和apiVersion …...
电脑开机出现英文字母,如何解决这个常见问题?
电脑开机时出现英文字母的情况通常意味着系统在启动过程中遇到了问题。这些英文字母可能是错误信息、系统提示或BIOS设置问题。通过理解这些信息并采取适当的措施,您可以解决大多数启动问题。本文将介绍三种解决电脑开机出现英文字母问题的方法,帮助您恢…...
一张试卷
目录 问题 1: 1.时间 题目描述1 输入1 输出1 样例输入1 样例输出1 提示1 代码1 问题 2: 超酷的电话号码 题目描述2 输入2 输出2 样例输入2 样例输出2 提示2 代码2 问题 3:3.爸爸的数学题 题目描述3 输入3 输出3 样例输入3 样例输出3 提示3 代码3 问题 4: 4. 营养膳食 题目描述4…...
记一次 .NET某游戏币自助机后端 内存暴涨分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序内存会偶发性暴涨,自己分析了下是非托管内存问题,让我帮忙看下怎么回事?哈哈,看到这个dump我还是非常有兴趣的,居然还有这种游戏币自助机…...
计算机考研|哪些985/211院校不歧视双非二本生?
说句残酷的话,能对某一专业做出贡献,那么你的水平肯定是很高的。如果普通学生,普通本科的话可能很难做到这一点。这也是现在考研风气比较强的原因,一部分专业能力不突出的学生来选择深造3年。 对于基础较差想要考计算机研究生的同…...
Spring Boot:简化 Java 应用开发的艺术
Spring Boot 是一种用于快速开发、运行和管理 Java 应用程序的开源框架。它简化了基于 Spring 的应用程序的配置和部署,使得开发者能够更加专注于业务逻辑的实现。本文将介绍 Spring Boot 的核心特性、优势以及如何在项目中使用 Spring Boot。 一、核心特性 自动配…...
elasticsearch安装与使用(2)-基于term匹配的简单搜索引擎搭建
把一篇pdf论文解析后,放入es数据库中,建立倒排索引表,并实现简单搜索。 1、pdf论文解析(英文) 安装pdf解析包 pip install pdfminer.sixdef extract_text_from_pdf(filename, page_numbersNone, min_line_length1):从pdf文件中提取文字:pa…...
速盾:ddos防护与高防ip区别?
在网络安全领域,DDOS 防护和高防 IP 都是重要的防护手段,但它们之间存在着一些明显的区别。 DDOS 防护是一种针对分布式拒绝服务攻击的防御策略。它通过多种技术和方法来识别和抵御 DDOS 攻击。常见的 DDOS 防护手段包括流量清洗、连接限制、协议分析等。…...
Java中StringBulider详解
StringBuilder 是 Java 中一个用来创建可变字符串的类。与 String 类不同,StringBuilder 对象能够被修改,不会创建新的对象,因此在需要进行大量字符串操作时,StringBuilder 更高效。以下是 StringBuilder 的详细讲解。 创建 Stri…...
基于springboot高校就业招聘系统的设计
管理员账户功能包括:系统首页,个人中心,就业咨询管理,毕业去向管理,简历管理,管理员管理,基础数据管理 辅导员账户功能包括:系统首页,个人中心,就业咨询管理…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
Qwen系列之Qwen3解读:最强开源模型的细节拆解
文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...
华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手
华为云FlexusDeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手 一、构建知识库问答助手引言二、构建知识库问答助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建知识库问答助手实战3.1 配置Dify环境3.2 创建知识库问答助手3.3 使用知…...
