【CubeMX-HAL库】STM32F407—无刷电机学习笔记
目录
简介:
学习资料:
跳转目录:
一、工程创建
二、板载LED
三、用户按键
四、蜂鸣器
1.完整IO控制代码
五、TFT彩屏驱动
六、ADC多通道
1.通道确认
2.CubeMX配置
①开启对应的ADC通道
②选择规则组通道
③开启DMA
④开启ADC中断
3.KEIL配置
①内部温度传感器
②NTC热敏电阻
查表法计算NTC温度
公式法计算NTC温度
实际效果
③INA240A2电流传感器
4.完整ADC代码
①BSP_ADC.c
②BSP_ADC.h
七、SPI_NOR FLASH
八、SDIO_SD卡
九、I2C_AS5600编码器
1.Cube MX配置
2.KEIL配置
①AS5600.c
②AS5600.h
3.演示效果
简介:
本系列使用硬件:
1.核心板:【立创·天空星STM32F407VxT6】开发板
2.控制板:STM32天空星_无刷电机拓展板
3.电机:1806无刷云台电机
学习资料:
立创天空星STM32开发板资料
DENGFOC文档
LVGL官网
百问网-LVGL中文开发手册
跳转目录:
【CubeMX-HAL库】STM32F407—无刷电机学习笔记
【CubeMX-HAL库】STM32F407—无刷电机基础知识
【CubeMX-HAL库】STM32F407—无刷电机开环控制
【CubeMX-HAL库】STM32F407—无刷电机闭环控制
【CubeMX-HAL库】STM32F407—无刷电机电流闭环控制
【CubeMX-HAL库】STM32F407—无刷电机SVPWM控制
【CubeMX-HAL库】软件、硬件SPI+DMA驱动TFT彩屏(LVGL)
后续继续补充......
其他笔记跳转链接:【CubeMX-HAL库】STM32H743—学习笔记
一、工程创建
本实验通过Cube MX配置使用Keil5编写程序代码。
①打开Cube MX创建新工程,在搜索框输入STM32F407ZET6选择对应芯片。
②在系统核心配置中选择RCC->打开外部时钟源HSE和LSE。
③在DEBUG栏中使能SW引脚。
④将时钟频率设置为168MHz。
⑤设置文件路径及工程名,配置生成Keil-MDK文件。
⑥ 选择复制必要的文件,并且’.c/.h‘独立分开后点击"GENERATE CODE"生成代码。
⑦打开生成的Keil工程,可以先将编码设置为UTF-8格式(LVGL中字库大部分为UTF-8编码,防止之后乱码),进入魔术棒勾选使用LIB库,选择对应的下载器并勾复位并运行,然后编译工程,顺便将部件框都拖到习惯的位置,编译成功后即可下载程序。
二、板载LED
通过原理图可知核心板上LED接在PB2引脚,高电平点亮。
#define LED_OFF HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET)
#define LED_ON HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET)
#define LED HAL_GPIO_ReadPin(LED_GPIO_Port,LED_Pin)
#define LED_TOG HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin)
三、用户按键
由原理图可知,按键为PA0,拨动开关引脚分别为PD8,PD9,PD14。
CubeMX设置对应IO,并配置相应上拉下拉。
#define KEY_R HAL_GPIO_ReadPin(KEY_R_GPIO_Port,KEY_R_Pin)
#define KEY_D HAL_GPIO_ReadPin(KEY_D_GPIO_Port,KEY_D_Pin)
#define KEY_L HAL_GPIO_ReadPin(KEY_L_GPIO_Port,KEY_L_Pin)
#define KEY_UP HAL_GPIO_ReadPin(KEY_WKUP_GPIO_Port,KEY_WKUP_Pin)uint8_t key_scan(uint8_t mode)
{static uint8_t key = 1;if(mode)key = 1;if(key == 1 && (KEY_R == 0 || KEY_D == 0 || KEY_L == 0 || KEY_UP == 1)){key = 0;HAL_Delay(2);if(KEY_R == 0) return 1;else if(KEY_D == 0) return 2;else if(KEY_L == 0) return 3;else if(KEY_UP == 1) return 4;}else if(KEY_R == 1 && KEY_D == 1 && KEY_L == 1 && KEY_UP == 0)key = 1;return 0;
}
四、蜂鸣器
由原理图可知无源蜂鸣器在PB1,刚好在ITM3_CH4通道可使用PWM驱动。
CubeMX配置TIM3的CH4通道,使用2KHz频率驱动蜂鸣器。
#define BEEP_Init HAL_TIM_PWM_Start_IT(&htim3,TIM_CHANNEL_4)//2KHz NO Source BEEP
#define BEEP_ON TIM3->CCR4 = 50
#define BEEP_OFF TIM3->CCR4 = 100
1.完整IO控制代码
#ifndef __key_H__
#define __key_H__#include "main.h"#define BEEP_Init HAL_TIM_PWM_Start_IT(&htim3,TIM_CHANNEL_4)//2KHz NO Source BEEP
#define BEEP_ON TIM3->CCR4 = 50
#define BEEP_OFF TIM3->CCR4 = 100#define LED_OFF HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET)
#define LED_ON HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET)
#define LED HAL_GPIO_ReadPin(LED_GPIO_Port,LED_Pin)
#define LED_TOG HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin)#define KEY_R HAL_GPIO_ReadPin(KEY_R_GPIO_Port,KEY_R_Pin)
#define KEY_D HAL_GPIO_ReadPin(KEY_D_GPIO_Port,KEY_D_Pin)
#define KEY_L HAL_GPIO_ReadPin(KEY_L_GPIO_Port,KEY_L_Pin)
#define KEY_UP HAL_GPIO_ReadPin(KEY_WKUP_GPIO_Port,KEY_WKUP_Pin)uint8_t key_scan(uint8_t mode)
{static uint8_t key = 1;if(mode)key = 1;if(key == 1 && (KEY_R == 0 || KEY_D == 0 || KEY_L == 0 || KEY_UP == 1)){key = 0;HAL_Delay(2);if(KEY_R == 0) return 1;else if(KEY_D == 0) return 2;else if(KEY_L == 0) return 3;else if(KEY_UP == 1) return 4;}else if(KEY_R == 1 && KEY_D == 1 && KEY_L == 1 && KEY_UP == 0)key = 1;return 0;
}#endif
五、TFT彩屏驱动
屏幕使用SPI+DMA驱动,背光引脚暂未使用调光设置没开启PWM。
详细代码介绍可转【CubeMX-HAL库】软件、硬件SPI+DMA驱动TFT彩屏(LVGL)
六、ADC多通道
1.通道确认
由原理图可知,我们本次需要采集的ADC主要有两个三项电流部分、NTC控制板温度、芯片内部温度。
2.CubeMX配置
①开启对应的ADC通道
②选择规则组通道
③开启DMA
④开启ADC中断
可进行DMA采集一定次数之后,在中断中进行滤波。
3.KEIL配置
①内部温度传感器
#define Vsense 0.76f //温度传感器在25℃时的电压值
#define Avg_Slope 0.0025f //温度与Vsense曲线的平均斜率
float ADC_Get_MCU_Temperature(void)//获取内部温度传感器温度
{float adc_vol,temp;adc_vol = ADC_T * 3.3f / 4096;temp = (adc_vol - Vsense) / Avg_Slope + 25;return temp;
}
②NTC热敏电阻
本次NTC使用10K ±1%精度的电阻,
由原理图中的NTC电路,推算采集的电压值,然后在反推当前NTC的阻值。(下面3.3V改为5V)
(当10K在下,NTC在上时计算如下:)
查表法计算NTC温度
#define data0 28017
#define data1 26826
#define data2 25697
#define data3 24629
#define data4 23618
#define data5 22660
#define data6 21752
#define data7 20892
#define data8 20075
#define data9 19299
#define data10 18560
#define data11 18482
#define data12 18149
#define data13 17632
#define data14 16992
#define data15 16280
#define data16 15535
#define data17 14787
#define data18 14055
#define data19 13354
#define data20 12690
#define data21 12068
#define data22 11490
#define data23 10954
#define data24 10458
#define data25 10000
#define data26 9576
#define data27 9184
#define data28 8819
#define data29 8478
#define data30 8160
#define data31 7861
#define data32 7579
#define data33 7311
#define data34 7056
#define data35 6813
#define data36 6581
#define data37 6357
#define data38 6142
#define data39 5934
#define data40 5734
#define data41 5541
#define data42 5353
#define data43 5173
#define data44 4998
#define data45 4829
#define data46 4665
#define data47 4507
#define data48 4355
#define data49 4208
#define data50 4065
#define data51 3927
#define data52 3794
#define data53 3664
#define data54 3538
#define data55 3415
#define data56 3294
#define data57 3175
#define data58 3058
#define data59 2941
#define data60 2825
#define data61 2776
#define data62 2718
#define data63 2652
#define data64 2582
#define data65 2508
#define data66 2432
#define data67 2356
#define data68 2280
#define data69 2207
#define data70 2135
#define data71 2066
#define data72 2000
#define data73 1938
#define data74 1879
#define data75 1823
#define data76 1770
#define data77 1720
#define data78 1673
#define data79 1628
#define data80 1586
#define data81 1546
#define data82 1508
#define data83 1471
#define data84 1435
#define data85 1401
#define data86 1367
#define data87 1334
#define data88 1301
#define data89 1268
#define data90 1236
#define data91 1204
#define data92 1171
#define data93 1139
#define data94 1107
#define data95 1074
#define data96 1042
#define data97 1010const uint16_t NTC_Table[98]={data0,data1,data2,data3,data4,data5,data6,data7,data8,data9,data10,data11,data12,data13,data14,data15,data16,data17,data18,data19,data20,data21,data22,data23,data24,data25,data26,data27,data28,data29,data30,data31,data32,data33,data34,data35,data36,data37,data38,data39,data40,data41,data42,data43,data44,data45,data46,data47,data48,data49,data50,data51,data52,data53,data54,data55,data56,data57,data58,data59,data60,data61,data62,data63,data64,data65,data66,data67,data68,data69,data70,data71,data72,data73,data74,data75,data76,data77,data78,data79,data80,data81,data82,data83,data84,data85,data86,data87,data88,data89,data90,data91,data92,data93,data94,data95,data96,data97,
};uint16_t NTC_Get_Temp_Array(void)//NTC温度查表计算(放大了10倍)
{ float t;unsigned int dat,max,min,mid,da,j;t=ADC_NTC;t=t/4096;t=t*3300;//计算mV电压t=t/(5-t/1000); dat=t*10;da=dat;max=97;min=0;while(1) {mid=(max+min)/2;if(NTC_Table[mid]<da)max=mid;elsemin=mid;if((max-min)<=1)break;}if(max==min)da=min*10;else {j=(NTC_Table[min]-NTC_Table[max])/10;j=(NTC_Table[min]-da)/j;da=j;da=10*min+da; //采集的温度放大了10倍}return da;
}
公式法计算NTC温度
#include "math.h"
/*Rt = Rp *exp(B*(1/T1-1/T2))Rt 是热敏电阻在T1温度下的阻值;Rp是热敏电阻在T2常温下的标称阻值;exp是e的n次方,e是自然常数,就是自然对数的底数,近似等于2.7182818;B值是热敏电阻的重要参数,教程中用到的热敏电阻B值为3380;这里T1和T2指的是开尔文温度,T2是常温25℃,即(273.15+25)KT1就是所求的温度
*/
#define Rp 10000.0f/* 10K */
#define T2 (273.15f + 25.0f)/* T2 */
#define Bx 3380.0f/* B */
#define Ka 273.15f/*** @brief 计算温度值* @note 计算温度分为两步:1.根据ADC采集到的值计算当前对应的Rt2.根据Rt计算对应的温度值* @param para: 温度采集对应ADC通道的值(已滤波)* @retval 温度值*/
float NTC_Get_Temp_Count(uint16_t ADC_VALUE)//计算温度值
{float Rt;float temp;/*NTC在上,分压电阻在下时:Rt = 5.0 * 10000 / VTEMP - 10000,其中VTEMP就是温度检测通道采集回来的电压值,VTEMP = ADC值* 3.3/4096由此我们可以计算出当前Rt的值:Rt = 5.0f * 10000.0f / (para * 3.3f / 4096.0f ) - 10000.0f; NTC在下,分压电阻在上时:Rt = (10k * VTEMP) / (3.3 - VTEMP)Rt = 10000.0f * (para * 3.3f / 4096.0f) / (5.0f - (para * 3.3f / 4096.0f));*/ Rt = 10000.0f * (ADC_VALUE * 3.3f / 4096.0f) / (5.0f - (ADC_VALUE * 3.3f / 4096.0f));/*根据当前ADC值计算出Rt的值*//*根据当前Rt的值来计算对应温度值:Rt = Rp *exp(B*(1/T1-1/T2))*/temp = Rt / Rp;/* 解出exp(B*(1/T1-1/T2)) ,即temp = exp(B*(1/T1-1/T2)) */temp = log(temp);/* 解出B*(1/T1-1/T2) ,即temp = B*(1/T1-1/T2) */temp /= Bx;/* 解出1/T1-1/T2 ,即temp = 1/T1-1/T2 */temp += (1.0f / T2);/* 解出1/T1 ,即temp = 1/T1 */temp = 1.0f / (temp);/* 解出T1 ,即temp = T1 */temp -= Ka;/* 计算T1对应的摄氏度 */return temp;/* 返回温度值 */
}
实际效果
③INA240A2电流传感器
4.完整ADC代码
①BSP_ADC.c
②BSP_ADC.h
七、SPI_NOR FLASH
八、SDIO_SD卡
九、I2C_AS5600编码器
1.Cube MX配置
快速模式
2.KEIL配置
①AS5600.c
#include "AS5600.h"uint16_t AS5600_1_ReadRaw(void)//获取原始角度寄存器
{uint8_t data[2]={AS5600_RAW_ANGLE_H,0x00};HAL_I2C_Master_Transmit(&hi2c1,AS5600_ADDRESS_W,data,1,Time_Out);HAL_I2C_Master_Receive(&hi2c1,AS5600_ADDRESS_R,data,2,Time_Out);
// I2C_Start();
// I2C_SendByte(AS5600_ADDRESS_W);
// I2C_RecviveAck();
// I2C_SendByte(AS5600_RAW_ANGLE_H);
// I2C_RecviveAck();
//
// I2C_Start();
// I2C_SendByte(AS5600_ADDRESS_R);
// I2C_RecviveAck();
// Data_H = I2C_RecviveData();
// I2C_RecviveAck();
//
// I2C_Start();
// I2C_SendByte(AS5600_ADDRESS_R);
// I2C_RecviveAck();
// Data_L = I2C_RecviveData();
// I2C_SendAck(1);
// I2C_Stop();return (data[0] << 8) | data[1];
}float AS5600_1_GetAngle_0_2PI(void)//读取角度(0-2PI)
{float Angle = 0.0;Angle = AS5600_1_ReadRaw() * _2PI / 4096;
// Angle = (Angle/4096) * 360;return Angle;
}float AS5600_1_Full_Angle = 0.0;
float AS5600_1_Last_Angle = 0.0;
float AS5600_1_GetAngle_Cycles(void)//读取圈数
{float Now_Angle = 0.0;float Angle = AS5600_1_GetAngle_0_2PI();Now_Angle = Angle - AS5600_1_Last_Angle;if(fabs(Now_Angle) > (0.8f*2*PI)){AS5600_1_Full_Angle = AS5600_1_Full_Angle + ((Now_Angle > 0) ? -1 :1);}AS5600_1_Last_Angle = Angle;return (AS5600_1_Full_Angle * 2 * PI + AS5600_1_Last_Angle);
}uint16_t AS5600_2_ReadRaw(void)//获取原始角度寄存器
{uint8_t data[2]={AS5600_RAW_ANGLE_H,0x00};HAL_I2C_Master_Transmit(&hi2c2,AS5600_ADDRESS_W,data,1,Time_Out);HAL_I2C_Master_Receive(&hi2c2,AS5600_ADDRESS_R,data,2,Time_Out);return (data[0] << 8) | data[1];
}float AS5600_2_GetAngle_0_2PI(void)//读取角度(0-2PI)
{float Angle = 0.0;Angle = AS5600_2_ReadRaw() * _2PI / 4096;return Angle;
}float AS5600_2_Full_Angle = 0.0;
float AS5600_2_Last_Angle = 0.0;
float AS5600_2_GetAngle_Cycles(void)//读取圈数
{float Now_Angle = 0.0;float Angle = AS5600_2_GetAngle_0_2PI();Now_Angle = Angle - AS5600_2_Last_Angle;if(fabs(Now_Angle) > (0.8f*2*PI)){AS5600_2_Full_Angle = AS5600_2_Full_Angle + ((Now_Angle > 0) ? -1 :1);}AS5600_2_Last_Angle = Angle;return (AS5600_2_Full_Angle * 2 * PI + AS5600_2_Last_Angle);
}float Last_Vel_ts = 0.0;
float Vel_Last_Angle = 0.0;
float AS5600_2_GetVelocity(void)
{float dt = 0.0;float Vel_ts = SysTick -> VAL;if(Vel_ts < Last_Vel_ts) dt = (Last_Vel_ts - Vel_ts)/9*1e-6f;else dt = (0xFFFFFF - Vel_ts + Last_Vel_ts)/9*1e-6f;if(dt < 0.0001f) dt = 10000;float Vel_Angle = AS5600_2_GetAngle_Cycles();float dv = Vel_Angle - Vel_Last_Angle;float velocity = (Vel_Angle - Vel_Last_Angle)/dt;Last_Vel_ts = Vel_ts;Vel_Last_Angle = Vel_Angle;return velocity;
}
②AS5600.h
#ifndef __AS5600_H
#define __AS5600_H#include "main.h"
#include <stdio.h>
#include <math.h>
#include "i2c.h"#define Time_Out 100//超时时间#define AS5600_ADDRESS_W 0X6C//加上读写位(1位1/0)
#define AS5600_ADDRESS_R 0X6D
#define AS5600_RAW_ANGLE_H 0X0C//原始角度寄存器[11:8]共12位分辨率
#define AS5600_RAW_ANGLE_L 0X0D//原始角度寄存器[7:0]#define PI 3.14159265359f
#define _2PI 6.28318530718fuint16_t AS5600_1_ReadRaw(void);//获取原始角度寄存器
float AS5600_1_GetAngle_0_2PI(void);//读取角度(0-2PI)
float AS5600_1_GetAngle_Cycles(void);//读取圈数uint16_t AS5600_2_ReadRaw(void);//获取原始角度寄存器
float AS5600_2_GetAngle_0_2PI(void);//读取角度(0-2PI)
float AS5600_2_GetAngle_Cycles(void);//读取圈数
float AS5600_2_GetVelocity(void);#endif
3.演示效果
相关文章:

【CubeMX-HAL库】STM32F407—无刷电机学习笔记
目录 简介: 学习资料: 跳转目录: 一、工程创建 二、板载LED 三、用户按键 四、蜂鸣器 1.完整IO控制代码 五、TFT彩屏驱动 六、ADC多通道 1.通道确认 2.CubeMX配置 ①开启对应的ADC通道 ②选择规则组通道 ③开启DMA ④开启ADC…...

使用 POI-TL 和 JFreeChart 动态生成 Word 报告
文章目录 前言一、需求背景二、方案分析三、 POI-TL JFreeChart 实现3.1 Maven 依赖3.3 word模板设置3.2 实现代码 踩坑 前言 在开发过程中,我们经常需要生成包含动态数据和图表的 Word 报告。本文将介绍如何结合 POI-TL 和 JFreeChart,实现动态生成 W…...

xxl-job的分片广播
目录 xxl-job的分片广播 场景引入 xxl-job简介 xxl-job的部署安装 代码编写 1.导入依赖 2.yml文件编写 3.编写xxl-job执行器配置类,维护一个xxl-job执行器的bean 4.编写第一个任务,任务名字叫firstJob 5.进入服务端,增加执行器和任务…...

MobaXterm破解会话上限限制
1. 下载安装包MobaXterm-Keygen 下载路径: https://gitcode.com/gh_mirrors/mob/MobaXterm-Keygen 2. 搭建python3环境 window下python3环境搭建可参考网站: https://blog.csdn.net/enteracity/article/details/135479689 3. 生成文件Custom.mxtpro…...

vscode设置保存时自动缩进和格式化
参考博客 如何在 VSCode 中自动缩进你的代码 | Linux 中国 省流 使用 Ctrl Shift P 来打开命令模式,搜索 Open User Settings 并按下回车你需要搜索 Auto Indent,并在 “编辑器:自动缩进(Editor: Auto Indent)” 中选择 “全部(Full)”P…...

一键查看电脑各硬件详细信息 轻松查看电脑硬件参数
今天为大家推荐两款非常实用的电脑硬件查看软件,它们能够一键快速查看电脑的各种配置信息,使用起来非常方便。 一键查看电脑各硬件详细信息 这款软件是绿色版的,无需安装,打开即可使用,文件大小仅为900多KB࿰…...

【C++11】lambda和包装器
1.新的类功能 1.1默认的移动构造和移动赋值 原来C类中,有6个默认成员函数:构造函数/析构函数/拷⻉构造函数/拷⻉赋值重载/取地址重 载/const 取地址重载,最后重要的是前4个,后两个⽤处不⼤,默认成员函数就是我们不写…...

react redux用法学习
参考资料: https://www.bilibili.com/video/BV1ZB4y1Z7o8 https://cn.redux.js.org/tutorials/essentials/part-5-async-logic AI工具:deepseek,通义灵码 安装相关依赖: 使用redux的中间件: npm i react-reduxreact-…...

前端HTML标签 meta中常见的一些属性
meta中常见的一些属性 <meta/> 标签的属性 <meta/> 是什么? <meta/> 标签主要用于表示和当前文档相关的 元数据 信息。 而 元数据(metadata),简单的来说就是描述数据的数据。例如,一个 HTML 文件是一…...

127,【3】 buuctf [NPUCTF2020]ReadlezPHP
进入靶场 吓我一跳 查看源码 点击 审计 <?php// 定义一个名为 HelloPhp 的类,该类可能用于执行与日期格式化相关的操作 class HelloPhp {// 定义一个公共属性 $a,用于存储日期格式化的模板public $a;// 定义一个公共属性 $b,用于存储…...

继承(python)
一、基础知识 (一)定义:子类能继承父类所有的公有属性和公有方法(先使用子类的方法、属性) (二)格式: class 子类名(父类名): #父类 class Ph…...

驱动开发系列36 - Linux Graphics 2D 绘制流程
一: 概述 在Linux中,2D绘制流程是操作系统、图形库、显示协议、驱动程序等多个组件协调工作的结果。整体流程如下步骤所示: 1. 客户端请求:客户端程序(如GTK、Qt应用程序)通过X11协议与Xorg-Server通信(或通过Wayland协议与Wayland合成器通信)、请求绘制2D图形,比如绘制…...

STL函数算法笔记
STL函数算法笔记 今天我们来学习的是STL库中的一些函数。首先,STL这个东西大家一定非常熟悉,里面很多的数据结构都帮了大家不少忙,那么今天我们就来说几个重要的数据结构。 向量 向量,也就是数据结构vector,你也可以称之为动态数组,本质跟数组差不多,只不过有一些好处…...

【Vue】在Vue3中使用Echarts的示例 两种方法
文章目录 方法一template渲染部分js部分方法一实现效果 方法二template部分js or ts部分方法二实现效果 贴个地址~ Apache ECharts官网地址 Apache ECharts示例地址 官网有的时候示例显示不出来,属于正常现象,多进几次就行 开始使用前,记得先…...

小红书自动化:如何利用Make批量生成爆款笔记
小红书自动化:如何利用Make制作个人自媒体中心,批量生成爆款笔记 引言 在如今信息爆炸的时代,如何高效地获取和分享优质内容,成为了每位自媒体工作者必须面对的挑战。你是否想过,如果能够将这项繁复的工作实现自动化…...

学习率调整策略 | PyTorch 深度学习实战
前一篇文章,深度学习里面的而优化函数 Adam,SGD,动量法,AdaGrad 等 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课:引…...

DeepSeekMoE 论文解读:混合专家架构的效能革新者
论文链接:DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models 目录 一、引言二、背景知识(一)MoE架构概述(二)现有MoE架构的问题 三、DeepSeekMoE架构详解(一&a…...

以下是基于巨控GRM241Q-4I4D4QHE模块的液位远程控制系统技术方案:
以下是基于巨控GRM241Q-4I4D4QHE模块的液位远程控制系统技术方案: 一、系统概述 本系统采用双巨控GRM241Q模块构建4G无线物联网络,实现山上液位数据实时传输至山下水泵站,通过预设逻辑自动控制水泵启停,同时支持APP远程监控及人工…...

【JVM详解五】JVM性能调优
示例: 配置JVM参数运行 #前台运行 java -XX:MetaspaceSize-128m -XX:MaxMetaspaceSize-128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio8 - XX:UseConcMarkSweepGC -jar /jar包路径 #后台运行 nohup java -XX:MetaspaceSize-128m -XX:MaxMetaspaceS…...

2.10日学习总结
题目一: AC代码 #include <stdio.h>#define N 1000000typedef long long l;int main() {int n, m;l s 0;l a[N 1], b[N 1];int i 1, j 1;scanf("%d %d", &n, &m);for (int k 1; k < n; k) {scanf("%lld", &a[k]);…...

疯狂前端面试题(四)
一、Ajax、JSONP、JSON、Fetch 和 Axios 技术详解 1. Ajax(异步 JavaScript 和 XML) 什么是 Ajax? Ajax 是一种用于在不刷新页面的情况下与服务器进行数据交互的技术。它通过 XMLHttpRequest 对象实现。 优点 - 支持同步和异步请求。 - 能…...

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-metrics.py
metrics.py ultralytics\utils\metrics.py 目录 metrics.py 1.所需的库和模块 2.def bbox_ioa(box1, box2, iouFalse, eps1e-7): 3.def box_iou(box1, box2, eps1e-7): 4.def bbox_iou(box1, box2, xywhTrue, GIoUFalse, DIoUFalse, CIoUFalse, eps1e-7): 5.def mas…...

SuperCopy解除网页禁用复制功能插件安装和使用
点击下载《SuperCopy解除网页禁用复制功能插件》 1. 前言 在当今数字化时代,网络已成为我们获取信息和知识的主要渠道。互联网如同一片浩瀚无垠的知识海洋,蕴藏着无数的资源,从学术论文到生活小窍门,从专业教程到娱乐资讯&#…...

UP-VLA:具身智体的统一理解与预测模型
25年1月来自清华大学和上海姚期智研究院的论文“UP-VLA: A Unified Understanding and Prediction Model for Embodied Agent”。 视觉-语言-动作 (VLA) 模型的最新进展,利用预训练的视觉语言模型 (VLM) 来提高泛化能力。VLM 通常经过视觉语言理解任务的预训练&…...

Unity 基于状态机的逻辑控制详解
状态机是游戏开发中常用的逻辑控制方法,它可以将复杂的逻辑分解成多个独立的状态,并通过状态转移来控制逻辑的执行流程。本文将详细介绍如何在 Unity 中基于状态机实现逻辑控制,并提供技术详解和代码实现。 一、状态机简介 1.1 基本概念 状…...

傅里叶单像素成像技术研究进展
摘要:计算光学成像,通过光学系统和信号处理的有机结合与联合优化实现特定成像特性的成像系统,摆脱了传统成像系统的限制,为光学成像技术添加了浓墨重彩的一笔,并逐步向简单化与智能化的方向发展。单像素成像(Single-Pi…...

IDEA接入DeepSeek
IDEA 目前有多个途径可以接入deepseek,比如CodeGPT或者Continue,这里借助CodeGPT插件接入,CodeGPT目前用的人最多,相对更稳定 一、安装 1.安装CodeGPT idea插件市场找到CodeGPT并安装 2.创建API Key 进入deepseek官网…...

前端如何判断浏览器 AdBlock/AdBlock Plus(最新版)广告屏蔽插件已开启拦截
2个月前AdBlock/AdBlock Plus疑似升级了一次 因为自己主要负责面对海外的用户项目,发现以前的检测AdBlock/AdBlock Plus开启状态方法已失效了,于是专门研究了一下。并尝试了很多方法。 已失效的老方法 // 定义一个检测 AdBlock 的函数 function chec…...

macOS 上部署 RAGFlow
在 macOS 上从源码部署 RAGFlow-0.14.1:详细指南 一、引言 RAGFlow 作为一款强大的工具,在人工智能领域应用广泛。本文将详细介绍如何在 macOS 系统上从源码部署 RAGFlow 0.14.1 版本,无论是开发人员进行项目实践,还是技术爱好者…...

如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令
如何在Kickstart自动化安装完成后ISO内拷贝文件到新系统或者执行命令 需求 在自动化安装操作系统完成后,需要对操作系统进行配置需要拷贝一些文件到新的操作系统中需要运行一些脚本 问题分析 Linux安装操作系统时,实际上是将ISO镜像文件中的操作系统…...