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

STM32 SysTick定时器

一、SysTick系统定时器概述

1.1 什么是SysTick定时器

SysTick(System Tick Timer)是ARM Cortex-M系列处理器内核集成的24位系统定时器,作为ARM架构的标准外设,它被深度整合在NVIC(嵌套向量中断控制器)中。该定时器采用向下递减计数方式,具有自动重装载功能,能够产生周期性的中断请求。

SysTick的通用性设计使得基于Cortex-M3内核的微控制器(如STM32F1系列)都具备这一外设,极大提升了代码的可移植性。其主要应用场景包括:

  • 实时操作系统(RTOS)的心跳时钟
  • 高精度延时函数实现
  • 时间片轮询任务调度
  • 性能监测与基准测试

1.2 SysTick技术特性

特性参数/描述
计数器位宽24位(最大计数值16,777,215)
时钟源内核时钟或外部参考时钟(通常AHB/8)
中断触发计数到零时自动产生异常(异常号15)
重装载机制自动加载预置值并继续计数
典型应用频率STM32F103系列最高支持72MHz

https://img-blog.csdnimg.cn/direct/3d1a6f6a0e3e4c8a9b0b6c4c4d4c8e9a.png
(图示:SysTick与处理器内核的连接关系)

二、SysTick寄存器深度解析

SysTick通过四个寄存器实现完整控制,其内存映射地址为0xE000E010:

2.1 寄存器结构体

c

Copy

typedef struct {__IO uint32_t CTRL;    // 控制及状态寄存器__IO uint32_t LOAD;    // 重装载值寄存器__IO uint32_t VAL;     // 当前值寄存器__I  uint32_t CALIB;   // 校准值寄存器(只读)
} SysTick_Type;

2.2 控制寄存器(CTRL)

地址偏移:0x00,复位值:0x0000 0000

位域名称类型描述
16COUNTFLAGR计数完成标志位(读取自动清零)
2CLKSOURCER/W时钟源选择:0=外部时钟(AHB/8),1=内核时钟
1TICKINTR/W中断使能:1=计数到零时触发中断
0ENABLER/W定时器使能位

注:STM32F103的AHB总线时钟与内核时钟同频,典型值为72MHz

2.3 关键寄存器操作

重装载值计算:

c

Copy

// 计算1ms延时的重载值(假设系统时钟72MHz)
uint32_t reload = SystemCoreClock / 1000 - 1;
SysTick->LOAD = reload;

状态检测技巧:

c

Copy

// 高效等待计数完成
while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));

三、SysTick延时函数实现

3.1 微秒级延时实现

c

Copy

void delay_us(uint32_t us)
{SysTick->CTRL &= ~SysTick_CTRL_CLKSOURCE_Msk; // 选择外部时钟(AHB/8)SysTick->LOAD = 21 * us - 1;                  // 72MHz/8=9MHz → 每微秒9周期 → 实际需要9*usSysTick->VAL = 0;                             // 清除当前值SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;     // 启动定时器while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;    // 关闭定时器
}

参数计算推导:

  • 外部时钟频率 = 72MHz / 8 = 9MHz
  • 周期时间 = 1 / 9MHz ≈ 111.11ns
  • 1μs所需周期数 = 1μs / 111.11ns ≈ 9 → 实际取9*us

注意:示例代码中的21us存在计算错误,正确应为9us,后续分析将说明

3.2 毫秒级延时优化

c

Copy

void delay_ms(uint16_t ms)
{SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk;  // 使用内核时钟uint32_t reload = SystemCoreClock / 1000 - 1; // 精确计算重载值for(uint16_t i=0; i<ms; i++){SysTick->LOAD = reload;SysTick->VAL = 0;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));}SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}

3.3 代码中的关键问题分析

  1. 时钟源选择矛盾:

    • 原代码使用CTRL &= ~(1<<2)选择外部时钟(9MHz)
    • 但LOAD值计算基于21*us(对应21MHz时钟)
    • 正确做法应统一时钟源选择
  2. 最大延时限制:

    c

    Copy

    // 错误用法示例
    delay_us(1000000); // 试图延时1秒// 正确实现方式
    #define MAX_US_DELAY 0xFFFFFF / 21
    void safe_delay_us(uint32_t us){while(us > MAX_US_DELAY){delay_us(MAX_US_DELAY);us -= MAX_US_DELAY;}delay_us(us);
    }
    
  3. 中断使能缺失:

    • 原代码未启用TICKINT中断位
    • 在非阻塞延时场景下需要中断服务例程

四、SysTick高级应用技巧

4.1 操作系统心跳实现

c

Copy

// FreeRTOS配置示例
#define configSYSTICK_CLOCK_HZ    ( 72000000UL )
#define configTICK_RATE_HZ        ( 1000UL )void vConfigureSysTick(void){SysTick->LOAD = (configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ) - 1UL;SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk |SysTick_CTRL_ENABLE_Msk;
}

4.2 精确时间测量

c

Copy

uint32_t measure_execution_time(void (*func)(void)){SysTick->CTRL = 0; // 关闭定时器SysTick->LOAD = 0xFFFFFF; // 最大计数值SysTick->VAL = 0;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;func(); // 执行被测函数SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;return 0xFFFFFF - SysTick->VAL; // 返回实际计数值
}

4.3 低功耗模式集成

c

Copy

void enter_stop_mode(uint32_t ms){SysTick->LOAD = ms * (SystemCoreClock / 1000) - 1;SysTick->VAL = 0;SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);SystemCoreClockUpdate(); // 唤醒后恢复时钟
}

五、性能优化与调试技巧

5.1 临界区保护

c

Copy

__disable_irq(); // 关闭全局中断
// 执行关键时序操作
__enable_irq();

5.2 示波器验证方法

  1. 配置GPIO引脚作为测试点
  2. 在延时函数前后翻转电平
  3. 使用示波器测量脉冲宽度

c

Copy

GPIO_SetBits(TEST_PIN);
delay_us(500);
GPIO_ResetBits(TEST_PIN);

5.3 误差分析表

误差来源影响程度解决方案
中断响应延迟1-5周期使用硬件计数器补偿
时钟源抖动<0.1%选择高精度晶振
指令执行时间固定偏差校准基准值
电源电压波动可忽略保持稳定供电

六、常见问题解答

Q1:为什么SysTick更适合作为RTOS时基?

A:SysTick具有以下优势:

  • 内核集成,所有Cortex-M芯片通用
  • 独立时钟源,不受外设时钟门控影响
  • 精确的中断触发机制
  • 24位宽计数器支持长时间定时

Q2:如何实现微秒级以下精度?

A:可采用以下方法:

  1. 使用更高频率的时钟源(如168MHz)
  2. 启用DWT(数据观察点跟踪)周期计数器
  3. 使用硬件定时器的输入捕获功能

Q3:SysTick校准寄存器有什么作用?

A:CALIB寄存器提供:

  • 出厂校准的10ms重载值(TENMS域)
  • 时钟源信息(SKEW位)
  • 参考时钟是否存在(NOREF位)

七、结语

SysTick作为Cortex-M3内核的精妙设计,在嵌入式开发中发挥着重要作用。通过深入理解其工作机制,开发者可以:

  • 实现精准的时序控制
  • 构建可靠的系统基础
  • 优化功耗管理策略
  • 提升代码的跨平台兼容性

随着物联网和实时系统的发展,SysTick的应用将更加广泛。建议开发者结合具体芯片手册,灵活运用本文介绍的技术要点,打造高性能的嵌入式系统。

相关文章:

STM32 SysTick定时器

一、SysTick系统定时器概述 1.1 什么是SysTick定时器 SysTick&#xff08;System Tick Timer&#xff09;是ARM Cortex-M系列处理器内核集成的24位系统定时器&#xff0c;作为ARM架构的标准外设&#xff0c;它被深度整合在NVIC&#xff08;嵌套向量中断控制器&#xff09;中。…...

Modbus TCP协议介绍、原理解析与应用示例

深入了解Modbus TCP协议&#xff1a;介绍、原理解析与应用示例 在工业自动化领域&#xff0c;设备之间的通信与数据交换至关重要。Modbus协议作为一种经典的通信协议&#xff0c;因其简单、开放和易于实现的特点&#xff0c;被广泛应用于各种工业设备之间的数据传输。而Modbus…...

Elasticsearch 报错 Limit of total fields [1000] has been exceeded

一、错误代码&#xff1a; spring boot 链接es 插入审计日志数据报错&#xff1a; Caused by: org.elasticsearch.ElasticsearchException: Elasticsearch exception [typeillegal_argument_exception, reasonLimit of total fields [1000] has been exceeded while adding ne…...

maven中pom.xml setting.xml关系

1 在Spring Boot项目中&#xff0c;pom.xml和settings.xml文件都可以配置Maven仓库地址&#xff0c;但它们的作用和优先级有所不同。 ● settings.xml&#xff1a; ○ 配置本地仓库&#xff1a;使用 <localRepository> 元素指定本地仓库的路径。 ○ 配…...

PubLayNet:文档布局分析领域的大规模数据集

PubLayNet&#xff1a;文档布局分析领域的大规模数据集 1. 数据集概述 PubLayNet&#xff08;Public Layout Network&#xff09;是由IBM AUR NLP团队开发的大规模文档图像数据集&#xff0c;旨在推动文档理解与布局分析领域的研究。该数据集通过自动标注技术&#xff0c;对科…...

JAVA----方法

好久没发博客了~~~~~重生之我开始补知识 1.What is 方法&#xff08;method&#xff09; 方法是程序中最小的执行单元。 简单来说&#xff0c;就是将一些重复代码打包&#xff0c;要用的时候我们进行调用就好&#xff01; e.g. public static void main&#xff08;String…...

mybatis xml中特殊字符处理

1&#xff0c;CDATA区&#xff1a; 它的全称为character data,以"<![CDATA[ "开始&#xff0c;以" ]]>" 结束&#xff0c;在两者之间嵌入不想被解析程序解析的原始数据&#xff0c;解析器不对CDATA区中的内容进行解析&#xff0c;而是将这些数据原封…...

vue3+dhtmlx 甘特图真是案例

使用vue3 ts dhtmlx 实现项目任务甘特图展示 支持拖拽&#xff0c;选择人员&#xff0c;优先级&#xff0c;开发状态&#xff0c;进度 效果图 完整代码 安装命令&#xff1a;npm i dhtmlx-gantt <template><div style"height: 100%; background-color: white…...

Chrome/Edge浏览器使用多屏完美解决方案,http部署使用https部署的功能

多屏使用场景&#xff1a;例如1屏显示录入操作界面&#xff0c;2屏显示SOP。或者每个屏上显示不同的看板内容等 废话不少说&#xff0c;直接上代码&#xff1a;将下面的代码复制到txt记事本里&#xff0c;保存为html格式即可本地观看效果 <!DOCTYPE html> <html>…...

Linux中进程的属性:状态

一、通用OS进程中的各种状态与相关概念 1.1通用进程中的状态 CPU执行进程代码&#xff0c;不是把进程执行完才开始执行下一个&#xff0c;而是给每个进程预分配一个“时间片”&#xff0c; CPU基于时间片进行轮转调度&#xff08;每个CPU分别进行&#xff09; 其中发涉及到的…...

软件架构师常用的软件工具有哪些

软件架构师的工作离不开多种工具的支撑&#xff0c;主要包括 建模与设计工具、文档与协作平台、代码质量与静态分析工具、性能与监控工具、DevOps 工具链、架构可视化与管理平台 等。其中&#xff0c;建模与设计工具 是架构师最核心的武器&#xff0c;能够帮助其从业务抽象到技…...

rl中,GRPO损失函数详解。

文章目录 **一、GRPO损失函数的设计背景****二、代码逐行解析****三、关键组件详解****1. 对数概率与KL散度计算****2. 优势值与策略梯度****3. 掩码与平均损失****四、训练动态与调参建议**在TRL(Transformer Reinforcement Learning)库中,GRPO(Group Relative Policy Opt…...

奇安信春招面试题

奇安信面试真题&#xff0c;以下是5道具有代表性的经典技术面试题及其解析&#xff0c;覆盖网络安全、渗透测试、安全架构设计等核心领域。 《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.…...

MineWorld,微软研究院开源的实时交互式世界模型

MineWorld是什么 MineWorld是微软研究院开发并开源的一个基于《我的世界》&#xff08;Minecraft&#xff09;的实时互动世界模型。该模型采用了视觉-动作自回归Transformer架构&#xff0c;将游戏场景和玩家动作转化为离散的token ID&#xff0c;并通过下一个token的预测进行…...

Nginx RTMP配置存储位置

window&#xff1a; 支持本地磁盘和远程网络位置 配置文件如下 worker_processes 1;events {worker_connections 1024; }#RTMP服务 rtmp {server { listen 1935; #监听端口chunk_size 4096; #数据传输块大小application my_live { # 创建rtmp应用hlslive on; # 当路径匹…...

JVM理解(通俗易懂)

虽然网上有很多关于JVM的教程,但是都天花乱坠,很多都是一上来就JVM内存模型、JVM双亲委派等等,(可能我比较菜看不懂)。于是我自己决定写一篇能看懂的文章~如果有看不懂我就自己百度,大家有什么疑问也可以评论区交流~ 欢迎指点我的Error~ JVM概念 JVM大家都知道,就Ja…...

python三维矩阵的维度

matrix_3x3x3 np.array([[[ 8.35, 16.72, 17.46],[16.72, 33.49, 34.97],[17.46, 34.97, 36.51]],[[16.72, 33.49, 34.97],[33.49, 67.09, 70.05],[34.97, 70.05, 73.13]],[[17.46, 34.97, 36.51],[34.97, 70.05, 73.13],[36.51, 73.13, 76.35]] ]) 例如这样的三维矩阵&#…...

HarmonyOS 是 Android 套壳嘛?

文章目录 HarmonyOS 是 Android 套壳吗&#xff1f;技术视角的深度解析一、核心结论二、技术对比&#xff1a;从底层到应用层1. 内核与基础架构2. 应用开发与运行机制3. 生态与应用场景 三、常见误解的澄清误解 1&#xff1a;“HarmonyOS 使用 Android 应用&#xff0c;所以是套…...

【Java面试笔记:基础】10.如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?

1. 保证集合线程安全的方式 传统同步容器:如 Hashtable 和 Vector,通过在方法上加 synchronized 关键字实现线程安全,但性能较低。同步包装器:通过 Collections.synchronizedMap 等方法将普通集合包装成线程安全的集合,但仍然使用粗粒度的锁,性能不佳。List<String>…...

【Amazing晶焱科技高速 CAN Bus 传输与 TVS/ESD/EOS 保护,将是车用电子的生死关键无标题】

台北国际车用电子展是亚洲地区重量级的车用电子科技盛会&#xff0c;聚焦于 ADAS、电动车动力系统、智慧座舱、人机界面、车联网等领域。各大车厂与 Tier 1 供应链无不摩拳擦掌&#xff0c;推出最新技术与创新解决方案。 而今年&#xff0c;“智慧座舱” 无疑将成为全场焦点&am…...

电控---DMP库

一、DMP库的本质与核心定位 DMP库是为Invensense&#xff08;现TDK&#xff09;系列传感器&#xff08;如MPU6050、MPU9250等&#xff09;内置的数字运动处理器&#xff08;DMP&#xff09;硬件模块提供的软件接口层。其核心目标是&#xff1a; 抽象硬件操作&#xff1a;将复…...

YOLO数据处理

YOLO&#xff08;You Only Look Once&#xff09;的数据处理流程是为了解决目标检测领域的核心挑战&#xff0c;核心目标是为模型训练和推理提供高效、规范化的数据输入。其设计方法系统性地解决了以下关键问题&#xff0c;并对应发展了成熟的技术方案&#xff1a; 一、解决的问…...

Linux实现网络计数器

1.TcpServer.hpp文件 类TcpServer的私有成员变量有端口号&#xff0c;指向类Socket对象的指针&#xff0c;布尔值表示是否运行&#xff0c;以及回调函数&#xff0c;ioservice_t是表示参数为指向Socket对象的指针和InetAddr对象的函数&#xff0c;TcpServer类的构造函数接收端…...

数据分析:用Excel做周报

目录 1.初始模板 ​编辑 2.填充数据 2.1 日期以及表头 2.2 数据验证 2.3 计算数据填充 2.3.1 灵活计算 2.3.2 单独计算 2.3.3 总计 2.4 数据格式 2.5 周累计 2.6 周环比 2.7 业务进度 3 美化 1.初始模板 2.填充数据 2.1 日期以及表头 结果指标有以下这些&#…...

初阶数据结构--排序算法(全解析!!!)

排序 1. 排序的概念 排序&#xff1a;所谓排序,就是使一串记录&#xff0c;按照其中的某个或某些些关键字的大小&#xff0c;递增或递减的排列起来的操作。 2. 常见的排序算法 3. 实现常见的排序算法 以下排序算法均是以排升序为示例。 3.1 插入排序 基本思想&#xff1a;…...

SpringCloud 微服务复习笔记

文章目录 微服务概述单体架构微服务架构 微服务拆分微服务拆分原则拆分实战第一步&#xff1a;创建一个新工程第二步&#xff1a;创建对应模块第三步&#xff1a;引入依赖第四步&#xff1a;被配置文件拷贝过来第五步&#xff1a;把对应的东西全部拷过来第六步&#xff1a;创建…...

加油站小程序实战教程14会员充值页面搭建

目录 1 原型2 搭建充值金额选择功能3 搭建金额输入4 搭建支付方式5 充值按钮最终的效果 上一篇我们介绍了充值规则的后台功能&#xff0c;有了基础的规则&#xff0c;在会员充值页面就可以显示具体的充值规则。本篇我们介绍一下会员充值的开发过程。 1 原型 充值页面我们是分为…...

内卷的中国智驾,合资品牌如何弯道超车?

作者 |德新 编辑 |王博 上海车展前夕&#xff0c;一汽丰田举办重磅车型bZ5的技术发布会&#xff0c;脱口秀演员庞博透露了这款车型的一大重要特性&#xff0c;其搭载来自Momenta的智能辅助驾驶系统行驶里程已经超过20亿公里。 携手中国科技公司提高车型智能化的属性&#xff…...

【go】go run-gcflags常用参数归纳,go逃逸分析执行语句,go返回局部变量指针是安全的

go官方参考文档&#xff1a; https://pkg.go.dev/cmd/compile 基本语法 go run 命令用来编译并运行Go程序&#xff0c;-gcflags 后面可以跟一系列的编译选项&#xff0c;多个选项之间用空格分隔。基本语法如下&#xff1a; go run -gcflags "<flags>" main.…...

数据库11(触发器)

触发器有三种类型&#xff0c;包括删除触发器&#xff0c;更新触发器&#xff0c;添加触发器 触发器的作用是&#xff1a;当某个表发生某个操作时&#xff0c;自动触发触发器&#xff0c;进行触发器规定的操作 触发器语句 create trigger tname --创建触发器 on aa --创建在表…...

十大物联网平台-物联网十大品牌

物联网十大品牌及平台解析 物联网&#xff08;IoT&#xff09;作为当下极具影响力的技术&#xff0c;正逐步渗透至社会各领域&#xff0c;为人们生活与社会发展带来诸多便利与变革。如今&#xff0c;众多企业投身于物联网行业&#xff0c;致力于推动其发展。以下是对物联网相关…...

心智模式VS系统思考

很多人常说&#xff0c;“改变自己&#xff0c;从改变思维开始。”但事实上&#xff0c;打破一个人的心智模式&#xff0c;远比想象中要困难得多。我们的思维方式、行为习惯&#xff0c;甚至是对世界的认知&#xff0c;往往是多年积累下来的产物。那些曾经的经历、长期的学习与…...

QT 打包安装程序【windeployqt.exe】报错c000007d原因:Conda巨坑

一、命令行执行命令 E:\Project\GNCGC\Bin\Win32\Vc22\RS422地检>E:\SoftWare\Qt\5.14.2\msvc2017\bin\windeployqt.exe CGC170.exe二、安装了Conda的朋友&#xff0c;巨坑 无语&#xff0c;E:\SoftWare\Qt\5.14.2\msvc2017\bin\windeployqt.exe 优先把Conda环境关联的Qt动…...

Vue3祖先后代组件数据双向同步实现方法

在 Vue3 中实现祖先后代组件的双向数据同步&#xff0c;可以通过组合式 API 的 provide/inject 配合响应式数据实现。以下是两种常见实现方案&#xff1a; 方案一&#xff1a;共享响应式对象 方法 html <!-- 祖先组件 --> <script setup> import { ref, provide…...

OpenBayes 一周速览|EasyControl 高效控制 DiT 架构,助力吉卜力风图像一键生成;TripoSG 单图秒变高保真 3D 模型

公共资源速递 10 个教程&#xff1a; * 一键部署 R1-OneVision * UNO&#xff1a;通用定制化图像生成 * TripoSG&#xff1a;单图秒变高保真 3D * 使用 VASP 进行机器学习力场训练 * InfiniteYou 高保真图像生成 Demo * VenusFactory 蛋白质工程设计平台 * Qwen2.5-0mni…...

服务器-conda下载速度慢-国内源

文章目录 前言一、解决问题&#xff1a;使用国内conda镜像下载&#xff08;差&#xff09;二、解决问题&#xff1a;使用pip下载(优)总结 前言 conda频道中有无效频道导致下载失败 一、解决问题&#xff1a;使用国内conda镜像下载&#xff08;差&#xff09; 步骤 1&#xff…...

python的pip download命令-2

当然可以,下面我详细解释一下 pip download 的作用、用法和技术原理。 🧠 一句话总结: pip download 是 pip 提供的一个命令,用来下载 Python 包及其依赖项的安装文件,但不会安装。 🔍 和 pip install 的区别: 命令作用是否安装是否联网典型用途pip install安装指定包…...

【Java设计模式及实践学习-第4章节-结构型模式】

第4章节-结构型模式 笔记记录 1. 适配器模式2. 代理模式3. 装饰器模式4. 桥接模式5. 组合模式6. 外观模式7. 享元模式8. 总结 1. 适配器模式 2. 代理模式 3. 装饰器模式 4. 桥接模式 5. 组合模式 6. 外观模式 7. 享元模式 Java语言中的String字符串就使用了享元模式&…...

python:mido 提取 midi文件中某一音轨的音乐数据

pip install mido 使用 mido库可以方便地处理 MIDI 文件&#xff0c;提取其中音轨的音乐数据。 1.下面的程序会读取指定的 MIDI 文件&#xff0c;并提取指定编号音轨的音乐数据&#xff0c;主要包括音符事件等信息。 编写 mido_extract.py 如下 # -*- coding: utf-8 -*- &…...

将输入帧上下文打包到下一个帧的预测模型中用于视频生成

Paper Title: Packing Input Frame Context in Next-Frame Prediction Models for Video Generation 论文发布于2025年4月17日 Abstract部分 在这篇论文中,FramePack是一种新提出的网络结构,旨在解决视频生成中的两个主要问题:遗忘和漂移。 具体来说,遗忘指的是在生成视…...

第六章:Multi-Backend Configuration

Chapter 6: Multi-Backend Configuration 从交响乐团到变形金刚&#xff1a;如何让代理适应不同环境&#xff1f; 在上一章任务工作流编排&#xff0c;我们学会了如何像指挥家一样协调任务。但就像变形金刚能切换不同形态应对环境变化一样&#xff0c;你的AI代理也需要能灵活切…...

tomcat远程Debug

tomcat远程Debug -- /bin目录下 catalina.bat文件下加一行 SET CATALINA_OPTS-server -Xdebug -Xnoagent -Djava.compilerNONE -Xrunjdwp:transportdt_socket,servery,suspendn,address8088idea端配置如下...

Vue3:component(组件:uniapp版本)

目录 一、基本概述二、基本使用三、插槽 一、基本概述 在项目的开发过程中&#xff0c;页面上井场会出现一些通用的内容&#xff0c;例如头部的导航栏&#xff0c;如果我们每一个页面都去写一遍&#xff0c;那实在是太繁琐了&#xff0c;所以&#xff0c;我们使用组件来解决这…...

rust编程学习(三):8大容器类型

1简介 rust标准库std::collections也提供了像C STL库中的容器&#xff0c;分为4种通用的容器&#xff0c;8种类型&#xff0c;如下表所示。 线性容器类型&#xff1a; 名称简介Vec<T>内存空间连续&#xff0c;可变长度的数组&#xff0c;类似于C中Vector<T>容器…...

前端中阻止事件冒泡的几种方法

在 JavaScript 前端开发中&#xff0c;阻止事件冒泡是处理 DOM 事件时的常见需求。以下是几种阻止事件冒泡的方法&#xff1a; 1. 使用 event.stopPropagation() 这是最常用的阻止事件冒泡的方法。 element.addEventListener(click, function(event) {event.stopPropagation…...

ShenNiusModularity项目源码学习(20:ShenNius.Admin.Mvc项目分析-5)

ShenNiusModularity项目的系统管理模块主要用于配置系统的用户、角色、权限、基础数据等信息&#xff0c;上篇文章中学习的日志列表页面相对独立&#xff0c;而后面几个页面之间存在依赖关系&#xff0c;如角色页面依赖菜单页面定义菜单列表以便配置角色的权限&#xff0c;用户…...

前端js需要连接后端c#的wss服务

背景 前端js需要连接后端wss服务 前端&#xff1a;js 后端&#xff1a;c# - 控制台搭建wss服务器 步骤1 wss需要ssl认证&#xff0c;所以需要个证书&#xff0c;随便找一台linux的服务器&#xff08;windows的话&#xff0c;自己安装下openssl即可&#xff09;&#xff0c;…...

MAGI-1自回归式大规模视频生成

1. 关于 MAGI-1 提出 MAGI-1——一种世界模型&#xff08;world model&#xff09;&#xff0c;通过自回归方式预测一系列视频块&#xff08;chunk&#xff0c;固定长度的连续帧片段&#xff09;来生成视频。 模型被训练为在时间维度上单调递增噪声的条件下对每个块进行去噪&a…...

深入剖析TCP协议(内容一):从OSI与TCP/IP网络模型到三次握手、四次挥手、状态管理、性能优化及Linux内核源码实现的全面技术指南

文章目录 TCP网络模型OSI参考模型TCP/IP五层模型 TCP状态TIME_WAIT 连接过程TCP三次握手TCP四次挥手 TCP优化TCP三次握手优化TCP四次挥手优化TCP数据传输优化 TCP TCP是面向连接的、可靠的、基于字节流的传输层通信协议&#xff1a; 面向连接&#xff1a;一定是一对一才能连接…...

基于deepseek的模型微调

使用 DeepSeek 模型(如 DeepSeek-VL、DeepSeek-Coder、DeepSeek-LLM)进行微调,可以分为几个关键步骤,下面以 DeepSeek-LLM 为例说明,适用于 Q&A、RAG、聊天机器人等方向的应用。 一、准备工作 1. 环境依赖 建议使用 transformers + accelerate 或 LoRA 等轻量微调方…...