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

STM32 中断系统深度剖析

在嵌入式系统开发领域,STM32 系列微控制器凭借其强大的性能和丰富的资源被广泛应用。中断系统作为 STM32 的关键特性之一,能够极大地提升系统的实时响应能力和多任务处理效率。本文将基于 STM32F4 系列芯片,深入剖析中断与外设中断的原理、配置及应用,帮助开发者全面掌握这一核心技术。

一、中断简介

中断是指当 CPU 执行程序时,由于外部或内部随机事件的发生,导致 CPU 暂时停止正在运行的程序,转而执行一段特殊的服务程序(中断服务子程序或中断处理程序)。待事件处理完毕后,CPU 再返回被中断的程序继续执行,引发中断的事件源被称为中断源。

STM32 的中断功能极为强大,每个外设都具备产生中断的能力。其中,可屏蔽中断通道多达 82 个(外部),系统异常有 10 个,并且拥有 16 个可编程优先级(使用 4 位中断优先级) 。除个别异常优先级固定外,其他异常优先级均可编程。在标准库文件 stm32f4xx.h 的 IRQn_Type 结构体中,包含了 F4 系列全部的异常声明。以 STM32F405xx/07xx 和 STM32F415xx/17xx 为例,其向量表如下:

序号优先级类型名称说明地址
保留0x00000000
3固定Reset复位0x00000004
W固定NMI不可屏蔽中断,RCC 时钟安全系统(CSS)连接到此向量0x00000008
-1
0
固定
可设置
HardFault
MemManage
所有类型的错误
存储器管理
0x0000000C
0x00000010
1可设置BusFault预取指失败,存储器访问失败0x00000014
2可设置UsageFault未定义的指令或非法状态0x00000018
保留0x0000001C - 0x0000002B
3可设置SVCall通过 SWI 指令调用的系统服务0x0000002C
4可设置DebugMonitor调试监控器0x00000030
保留0x00000034
5可设置Pendsv可挂起的系统服务0x00000038
07
6
可设置
可设置
WWDG
SysTick
窗口看门狗中断
系统滴答定时器
0x00000040
0x0000003C
18可设置PVD连接到 EXTI 线的可编程电压检测0x00000044
29TAMPSTAMP(PVD)中断0x00000048
310可设置
可设置
RTC_WKUP连接到 EXTI 线的入侵和时间蔽中断
连接到 EXTI 线的 RTC 唤醒中断
0x0000004C
4
5
6
7
11
12
13
14
可设置
可设置
可设置
FLASH
RCC
EXTI0
EXTI1
FLASH 全局中断
RCC 全局中断
EXTI 线 0 中断
0x00000050
0x00000054
0x00000058
0x0000005C
8
9
10
15
16
17
可设置
可设置
可设置
EXTI2
EXTI3
EXTI4
EXTI 线 1 中断
EXTI 线 2 中断
EXTI 线 3 中断
EXTI 线 4 中断
0x00000060
0x00000064
0x00000068
...............
80
81
87
88
可设置
可设置
哈希和随机数发生器全局中断
FPU 全局中断
0x00000180
0x00000184

二、NVIC(Nested vectored interrupt controller)

NVIC 即嵌套向量中断控制器,在中断向量表中,优先级 7 - 88(中断号从 0 - 82)代表着 STM32F103 的 91 个中断 ,优先级号越小,优先级越高。当异常或中断被触发时,程序计数器指针(PC)会跳转到对应地址执行,该地址存放跳转指令,进而跳转到服务函数执行相应功能。

在 MDK 开发环境中,可使用标准的异常和中断向量表文件 startup_stm32f40_41xxx.s ,其中明确规定了中断处理函数的名称,开发者不可随意定义。

在 STM32 中,中断优先级由抢占式优先级和响应优先级共同决定,二者组成 4 位控制字,数值越小优先级越高。通过不同的优先级分组,可灵活配置抢占式优先级和子优先级的位数:

优先级分组抢占式优先级子优先级高 4 位使用情况描述
NVICPriorityGroup_00 级抢占优先级0 - 15 级子优先级4bit 全用于子优先级
NVICPriorityGroup_10 - 1 级抢占优先级0 - 7 级子优先级1bit 用于抢占优先级,3bit 用于子优先级
NVICPriorityGroup_20 - 3 级抢占优先级0 - 3 级子优先级2bit 用于抢占优先级,2bit 用于子优先级
NVICPriorityGroup_30 - 7 级抢占优先级0 - 1 级子优先级3bit 用于抢占优先级,1bit 用于子优先级
NVICPriorityGroup_40 - 15 级抢占优先级0 级子优先级4bit 全用于抢占优先级

具有高抢占式优先级的中断能够在低抢占式优先级中断服务程序执行过程中被响应,即支持中断嵌套;而在抢占式优先级相同的情况下,若多个子优先级不同的中断同时到来,高子优先级的中断优先被响应 。不过,子优先级不支持中断嵌套,当低子优先级中断正在执行时,高子优先级中断需等待其执行结束才能得到响应。此外,Reset、NMI、Hard Fault 的优先级为负数,高于普通中断优先级且不可配置。

NVIC 相关的库函数位于 misc.c 中:

  • NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);:用于设置抢占式优先级的位数。

  • NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);:初始化配置函数,其中 NVIC_InitTypeDef 结构体定义如下:

typedef struct {uint8_t NVIC_IRQChannel; // 指定IRQ通道,可从IRQn_Type枚举中选择uint8_t NVIC_IRQChannelPreemptionPriority; // 抢占式优先级,取值0 - 15,值越小优先级越高uint8_t NVIC_IRQChannelSubPriority; // 子优先级,取值0 - 15,值越小优先级越高FunctionalState NVIC_IRQChannelCmd; // 使能或禁用IRQ通道,可设置为ENABLE或DISABLE
} NVIC_InitTypeDef;

三、外部中断

3.1 外部中断简介

外部中断 / 事件控制器(EXTI)负责管理控制器的 23 个中断 / 事件线 。每个中断 / 事件线都配备边沿检测器,可实现对输入信号的上升沿和下降沿检测。EXTI 能够对每条中断 / 事件线进行单独配置,可设置为中断或事件,并定义触发事件的属性。中断线路将输入信号传输至 NVIC,进而运行中断服务函数实现软件层面的功能;而事件线路则是向其他外设传输脉冲信号,属于硬件级别的电路信号传输。

STM32F4 的中断控制器支持 22 个外部中断 / 事件请求(中断线) 。对于每条中断线,开发者可设置相应的触发方式(上升沿触发、下降沿触发、边沿触发)并使能。各中断线的映射关系如下:

  • EXTI 线 0 - 15:对应外部 IO 口的输入中断。

  • EXTI 线 16:连接到 PVD 输出。

  • EXTI 线 17:连接到 RTC 闹钟事件。

  • EXTI 线 18:连接到 USB OTG FS 唤醒事件。

  • EXTI 线 19:连接到以太网唤醒事件。

  • EXTI 线 20:连接到 USB OTG HS(在 FS 中配置)唤醒事件。

  • EXTI 线 21:连接到 RTC 入侵和时间戳事件。

  • EXTI 线 22:连接到 RTC 唤醒事件。

系统配置控制器(SYSCFG)主要用于管理可执行代码存储区域的地址重映射、选择以太网 PHY 接口以及管理 GPIO 的外部中断线连接 。例如,SYSCFGEXTICR1 寄存器中的 EXTI0 [3:0] 位和 EXTI1 [3:0] 位分别用于映射 PA0 - PI0 和 PA1 - PI1 到相应的 EXTI 线。

3.2 配置流程

  1. 使能 GPIO 外设时钟:为使用的 GPIO 端口提供时钟,确保其正常工作。例如,若使用 PA0 和 PF9 端口,则需使能 GPIOA 和 GPIOF 的时钟:

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOF, ENABLE);
    
  2. 配置外部中断占用的 GPIO:将用于外部中断的 GPIO 端口配置为输入模式,无需设置复用功能。例如,配置 PA0 为按键输入端口:

    GPIO_InitTypeDef gpio_struct;
    gpio_struct.GPIO_Pin = GPIO_Pin_0;
    gpio_struct.GPIO_Mode = GPIO_Mode_IN;
    gpio_struct.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &gpio_struct);
    
  3. 使能 SYSCFG 外设时钟:SYSCFG 用于处理外部中断映射,因此需要使能其时钟:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    
  4. 设置中断线与 IO 的映射关系:通过 SYSCFG_EXTILineConfig() 函数设置 GPIO 端口与 EXTI 中断线的映射。例如,将 PA0 映射到 EXTI0:

    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
    
  5. 配置外部中断参数:使用 EXTI_InitTypeDef 结构体配置外部中断的相关参数,如中断线、模式、触发方式和使能状态等。例如,配置 EXTI0 为上升沿触发的中断:

    EXTI_InitTypeDef EXTI_InitStructure;
    EXTI_InitStructure.EXTI_Line = EXTI_Line0;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);
    
  6. 设置中断优先级(NVIC):通过 NVIC_InitTypeDef 结构体设置外部中断的优先级,包括抢占式优先级和子优先级,并使能中断通道。例如,设置 EXTI0 的优先级:

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    NVIC_InitTypeDef mynvic;
    mynvic.NVIC_IRQChannel = EXTI0_IRQn;
    mynvic.NVIC_IRQChannelPreemptionPriority = 0;
    mynvic.NVIC_IRQChannelSubPriority = 3;
    mynvic.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&mynvic);
    
  7. 编写中断处理函数:中断处理函数的名称必须与启动代码向量表中定义的一致。在函数中,需检测中断标志位,处理完中断后清除标志位。例如,EXTI0 的中断处理函数:

void EXTI0_IRQHandler() {if(EXTI_GetFlagStatus(EXTI_Line0) == SET) {// 处理中断事件,如设置标志位led_flag = 1;EXTI_ClearFlag(EXTI_Line0);}
}

3.3 实战案例:按键控制 LED 闪烁

以按下按键使 D1 灯闪烁五次为例,完整代码如下:

#include "stm32f4xx.h"uint8_t led_flag = 0;// 配置GPIO端口
void config_port() {RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOF, ENABLE);// 配置LED1端口为推挽低速输出GPIO_InitTypeDef gpio_struct;gpio_struct.GPIO_Pin = GPIO_Pin_9;gpio_struct.GPIO_Mode = GPIO_Mode_OUT;gpio_struct.GPIO_OType = GPIO_OType_PP;gpio_struct.GPIO_PuPd = GPIO_PuPd_NOPULL;gpio_struct.GPIO_Speed = GPIO_Low_Speed;GPIO_Init(GPIOF, &gpio_struct);// 按键端口配置gpio_struct.GPIO_Pin = GPIO_Pin_0;gpio_struct.GPIO_Mode = GPIO_Mode_IN;gpio_struct.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(GPIOA, &gpio_struct); 
}// 设置外部中断(EXTI与syscfg)
void config_exti() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure); 
}// 配置NVIC
void config_nvic() {NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitTypeDef mynvic;mynvic.NVIC_IRQChannel = EXTI0_IRQn;mynvic.NVIC_IRQChannelPreemptionPriority = 0; mynvic.NVIC_IRQChannelSubPriority = 3;mynvic.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&mynvic);
}// 中断函数
void EXTI0_IRQHandler() {if(EXTI_GetFlagStatus(EXTI_Line0) == SET) {led_flag = 1;EXTI_ClearFlag(EXTI_Line0);}
}// 简单延时函数
void delay() {int i = 1000000;while(i--);
}int main() {config_port();config_exti();config_nvic();while(1) {if(led_flag == 1) {for(int i = 0; i < 5; i++) {GPIO_SetBits(GPIOF, GPIO_Pin_9);delay();delay();GPIO_ResetBits(GPIOF, GPIO_Pin_9);delay();delay();}led_flag = 0;}}
}

在上述代码中,首先通过 config_port() 函数配置了按键输入端口(PA0)和 LED 输出端口(PF9);接着在 config_exti() 函数中完成了外部中断的配置,将 PA0 映射到 EXTI0 并设置为上升沿触发;config_nvic() 函数则设置了 EXTI0 的中断优先级;最后在主函数中,根据按键触发的中断标志 led_flag 控制 LED 闪烁五次。

四、总结

本文全面深入地介绍了 STM32 中断系统中的中断基本概念、NVIC 的工作机制以及外部中断的详细原理和配置方法,并通过实际案例展示了外部中断在按键控制 LED 闪烁中的应用。掌握这些知识对于开发高效、稳定的 STM32 嵌入式系统至关重要。在实际项目中,开发者可根据具体需求灵活配置中断优先级、触发方式等参数,充分发挥 STM32 中断系统的强大功能,提升系统的性能和响应速度。希望本文能为广大嵌入式开发者在 STM32 中断开发方面提供有益的参考和帮助。

相关文章:

STM32 中断系统深度剖析

在嵌入式系统开发领域&#xff0c;STM32 系列微控制器凭借其强大的性能和丰富的资源被广泛应用。中断系统作为 STM32 的关键特性之一&#xff0c;能够极大地提升系统的实时响应能力和多任务处理效率。本文将基于 STM32F4 系列芯片&#xff0c;深入剖析中断与外设中断的原理、配…...

FAST‘25论文解读:HaSiS单索引存储架构实现HTAP数据处理新范式

想象一下这样的场景&#xff1a;每一笔线上交易都能实时更新库存分析&#xff0c;金融应用能在交易发生那一刻完成欺诈检测——既不延迟也不损失性能。这正是HTAP&#xff08;Hybrid Transactional and Analytical Processing&#xff0c;混合事务与分析处理&#xff09;带来的…...

FastAPI:现代高性能Python Web框架的技术解析与实践指南

一、FastAPI的诞生背景与技术定位 在数字化转型的浪潮中,API(应用程序接口)作为连接服务与数据的核心枢纽,其性能与开发效率直接影响业务迭代速度。传统Python框架如Django和Flask虽功能丰富,但在高并发场景下面临性能瓶颈,且缺乏对异步编程的原生支持。FastAPI应运而生…...

缓存 --- 缓存击穿, 缓存雪崩, 缓存穿透

缓存 --- 缓存击穿, 缓存雪崩, 缓存穿透 缓存击穿&#xff08;Cache Breakdown&#xff09;概念原理实际场景代码实现&#xff08;互斥锁方案&#xff09; 缓存雪崩&#xff08;Cache Avalanche&#xff09;概念原理实际场景代码实现&#xff08;随机过期时间&#xff09; 缓存…...

Android 中实现图片翻转动画(卡片翻转效果)

1、简述 通过 ObjectAnimator 和 AnimatorSet 可以实现图片的翻转动画,并在翻转过程中切换图片,同时避免图片被镜像。 ObjectAnimator 是 Android 动画框架中的一个类,用于对对象的属性进行动画效果处理。它通过改变对象的属性值来实现动画效果,非常适合实现复杂的动画,如…...

【论文阅读21】-PSOSVM-CNN-GRU-Attention-滑坡预测(2024-12)

这篇论文主要提出并验证了一种新型的混合智能模型&#xff08;PSOSVM-CNN-GRU-Attention&#xff09;&#xff0c;用于准确预测滑坡的点位移&#xff0c;并构建可靠的位移预测区间。通过对Baishuihe滑坡和Shuping滑坡的案例分析&#xff0c;展示了该模型的出色性能。 [1] Zai D…...

蓝牙 6.0 发布,解锁无线科技新可能

在5G和Wi-Fi 7高速发展的时代&#xff0c;蓝牙技术始终以独特优势深度融入日常生活。从无线耳机到智能家居&#xff0c;它凭借低功耗、高兼容的特性&#xff0c;悄然连接各类智能设备&#xff0c;打造无缝的数字生活体验。无论是聆听音乐、智能门禁还是健康监测&#xff0c;蓝牙…...

EasyCVR视频智能分析平台助力智慧园区:全场景视频监控摄像头融合解决方案

一、方案背景 在智慧园区建设的浪潮下&#xff0c;设备融合、数据整合与智能联动已成为核心诉求。视频监控作为智慧园区的“视觉中枢”&#xff0c;其高效整合直接影响园区的管理效能与安全水平。然而&#xff0c;园区内繁杂的视频监控设备生态——不同品牌、型号、制式的摄像…...

PHP发送邮件

一、安装PHPMailer 进入项目目录下&#xff0c;执行&#xff1a;composer require phpmailer/phpmailer 二、使用 <?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception;require vendor/autoload.php;$mail new PHPMailer(true); header("…...

为您的照片提供本地 AI 视觉:使用 Llama Vision 和 ChromaDB 构建 AI 图像标记器

有没有花 20 分钟浏览您的文件夹以找到心中的特定图像或屏幕截图&#xff1f;您并不孤单。 作为工作中的产品经理&#xff0c;我总是淹没在竞争对手产品的屏幕截图、UI 灵感以及白板会议或草图的照片的海洋中。在我的个人生活中&#xff0c;我总是捕捉我在生活中遇到的事物&am…...

Spark on K8s 在 vivo 大数据平台的混部实战与优化

一、Spark on K8s 简介 (一)定义与架构 Spark on K8s 是一种将 Spark 运行在 Kubernetes(K8s)集群上的架构,由 K8s 直接创建 Driver 和 Executor 的 Pod 来运行 Spark 作业。其架构如下。 Driver Pod:相当于 Spark 集群中的 Driver,负责作业的调度和管理,它会根据作业…...

K8S节点出现Evicted状态“被驱逐”

在Kubernetes集群中&#xff0c;Pod状态为“被驱逐&#xff08;evicted&#xff09;”表示Pod无法在当前节点上继续运行&#xff0c;已被集群从节点上移除。 问题分析&#xff1a; 节点磁盘空间不足 &#xff0c;使用df -h查看磁盘使用情况 可以看到根目录 / 已100%满&#x…...

重学React(一):描述UI

背景&#xff1a;React现在已经更新到19了&#xff0c;文档地址也做了全面的更新&#xff0c;上一次系统性的学习还是在16-17的大版本更新。所以&#xff0c;现在就开始重新学习吧&#xff5e; 学习内容&#xff1a; React官网教程&#xff1a;https://zh-hans.react.dev/lea…...

CSS核心笔记002

margin塌陷问题 第一个子元素的上margin会作用在父元素上, 最后一个子元素的下margin会作用在父元素上解决 1. 给父元素设置 不为0的pandding 2. 给父元素设置宽度不为0 的border 3. 给父元素设置样式 overflow:hiddenmargin合并问题 兄弟元素的下外margin和会下面兄弟的上…...

遨游通讯发布国产化旗舰三防手机AORO AU1:以自主可控重塑工业安全

在全球产业链加速重构的背景下&#xff0c;国产化技术突破已成为工业领域高质量发展的核心驱动力。作为专精特新中小企业&#xff0c;遨游通讯始终以“让世界更安全、更高效、更简单”为使命&#xff0c;深耕“危、急、特”场景智能通信设备的研发。近日&#xff0c;遨游通讯正…...

【Python】Selenium切换网页的标签页的写法(全!!!)

在使用selenium做网站爬取测试的时候&#xff0c;我们经常会遇到一些需要点击的元素&#xff0c;才能点击到我们想要进入的页面&#xff0c; 于是我们就要模拟 不断地 点点点击 鼠标的样子。 这个时候网页上就会有很多的标签页&#xff0c;你的浏览器网页标签栏 be like: 那…...

洛谷P1177【模板】排序:十种排序算法全解(1)

扯谈 之前我已经把十大排序算法全讲了一遍&#xff08;具体详见专栏C排序算法&#xff09;,今天我们来用一道简单的题目总结实战一下。 算法实现 一、桶排序&#xff08;Bucket Sort&#xff09; ‌适用场景‌&#xff1a;数据范围已知且较小&#xff08;需根据测试数据调整…...

pytorch 51 GroundingDINO模型导出tensorrt并使用c++进行部署,53ms一张图

本专栏博客第49篇文章分享了将 GroundingDINO模型导出onnx并使用c++进行部署,并尝试将onnx模型转换为trt模型,fp16进行推理,可以发现推理速度提升了一倍。为此对GroundingDINO的trt推理进行调研,发现 在GroundingDINO-TensorRT-and-ONNX-Inference项目中分享了模型导出onnx…...

中间件--ClickHouse-11--部署示例(Linux宿主机部署,Docker容器部署)

一、Linux宿主机部署 1、环境准备 操作系统&#xff1a;推荐使用 CentOS 7/8 或 Ubuntu 18.04/20.04。硬件要求&#xff1a; 至少 2 核 CPU 和 4GB 内存。足够的磁盘空间&#xff08;根据数据量评估&#xff09;。CPU需支持SSE4.2指令集&#xff08;可通过以下命令检查&#…...

DeepSeek和Excel结合生成动态图表

文章目录 一、前言二、3D柱状图案例2.1、pyecharts可视化官网2.2、Bar3d-Bar3d_puch_card2.3、Deepseek2.4、WPS2.5、动态调整数据 一、前言 最近在找一些比较炫酷的动态图表&#xff0c;用于日常汇报&#xff0c;于是找到了 DeepseekExcel王牌组合&#xff0c;其等同于动态图…...

[Python入门学习记录(小甲鱼)]第6章 函数

函数就是把代码整理打包的东西 6.1 Python的函数基操 函数的基本操作 6.1.1 创建和调用函数 def myfunc():print(1)print(2)print(3) myfunc() # 输出 1 2 3 带换行 调用时会自动找函数定义6.1.2 函数的参数 def add(num1, num2):print(num1 num2) add(1, 2) # 输出 3…...

Ubuntu20.04 部署llama-factory问题集

llama3 微调教程之 llama factory 的 安装部署与模型微调过程&#xff0c;模型量化和gguf转换。_llamafactory 部署-CSDN博客 1.跟着教程 llama-factory下载不下来 来&#xff0c;试着换源&#xff0c;多试几次&#xff0c;就可以成功了。。。 2.跟着教程&#xff0c;发现无法…...

海量聊天数据处理:基于Spring Boot与SharingJDBC的分库分表策略及ClickHouse冷热数据分离

引言 随着互联网应用的快速发展&#xff0c;每天产生的聊天记录数量级已经达到了惊人的程度。以2000万条/天为例&#xff0c;一年下来就是大约7.3亿条记录。如此庞大的数据量给数据库的设计和管理带来了前所未有的挑战。本文将探讨如何使用SharingJDBC整合Spring Boot技术来实…...

EAL4+与等保2.0:解读中国网络安全双标准

EAL4与等保2.0&#xff1a;解读中国网络安全双标准 在当今数字化时代&#xff0c;网络安全已成为各个行业不可忽视的重要议题。特别是在金融、政府、医疗等领域&#xff0c;保护信息的安全性和隐私性显得尤为关键。在中国&#xff0c;EAL4和等级保护2.0&#xff08;简称“等保…...

GreatSQL启动崩溃:jemalloc依赖缺失问题排查

GreatSQL启动崩溃&#xff1a;jemalloc依赖缺失问题排查 故障现象&#xff1a; 之前协助用户安装 GreatSQL 测试环境时&#xff0c;遇到一个 case&#xff0c;数据库初始化时没有报错&#xff0c;但是使用mysqld_safe去启动&#xff0c;会直接 crash ,详情报错如下&#xff1…...

大语言模型助力 Support Case 分析,提升云服务效率

1. 背景 技术工单&#xff08;Support Case&#xff09;是企业在进行云平台操作的时候通常会用到的一种技术支持类型&#xff0c;提供的技术支持通常包括所有的云服务的使用问题、账单问题、限制额度提升等等。对于云平台的管理者而言&#xff0c;对各个 BU 所提的工单进行统计…...

ubuntu磁盘挂载

1、‌查看磁盘设备及分区‌ 命令‌&#xff1a;列出所有块设备&#xff08;磁盘及分区&#xff09; lsblk 0表示此块未挂载 2、格式化分区 sudo mkfs.ext4 /dev/sdb 注意sdb换成自己的块名称 3、创建挂载点目录‌ sudo mkdir -p /mnt/data4、永久挂载 sudo blkid /dev…...

在pycharm中搭建yolo11分类检测系统--PyQt5学习(二)

第二部分 测试本地pycharm通过程序连接远程服务器autodl 模型的推理需要借助远程服务器autodl&#xff0c;但是界面的运行是在pycharm中&#xff0c;我的设想是按钮调用一个py文件就好了。 1. 本地运行PyQt5界面。 2. 当需要载入权重时&#xff0c;通过SSH连接到AutodL服务…...

chili3d调试笔记8 打印零件属性 浏览器元素展开

无效&#xff0c; 返回的是节点不是坐标啥的&#xff0c; 找他的属性 把document和selectednote&#xff08;空集&#xff09;传给handleshowproperty方法 怎么获得selectnotes和selectnotes的property值 有selectnotes运行这段就行了 明天再搞 ----------------------------…...

新书速览|DeepSeek移动端AI应用开发:基于Android与iOS

《DeepSeek移动端AI应用开发&#xff1a;基于Android与iOS》 1 本书内容 《DeepSeek移动端AI应用开发:基于Android与iOS》深入剖析了DeepSeek平台的架构原理、API调用及开发实践等核心内容&#xff0c;助力读者在Android与iOS移动端高效集成DeepSeek API&#xff0c;打造出契…...