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 | |
0 | 7 6 | 可设置 可设置 | WWDG SysTick | 窗口看门狗中断 系统滴答定时器 | 0x00000040 0x0000003C |
1 | 8 | 可设置 | PVD | 连接到 EXTI 线的可编程电压检测 | 0x00000044 |
2 | 9 | TAMPSTAMP | (PVD)中断 | 0x00000048 | |
3 | 10 | 可设置 可设置 | 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_0 | 0 级抢占优先级 | 0 - 15 级子优先级 | 4bit 全用于子优先级 |
NVICPriorityGroup_1 | 0 - 1 级抢占优先级 | 0 - 7 级子优先级 | 1bit 用于抢占优先级,3bit 用于子优先级 |
NVICPriorityGroup_2 | 0 - 3 级抢占优先级 | 0 - 3 级子优先级 | 2bit 用于抢占优先级,2bit 用于子优先级 |
NVICPriorityGroup_3 | 0 - 7 级抢占优先级 | 0 - 1 级子优先级 | 3bit 用于抢占优先级,1bit 用于子优先级 |
NVICPriorityGroup_4 | 0 - 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 配置流程
-
使能 GPIO 外设时钟:为使用的 GPIO 端口提供时钟,确保其正常工作。例如,若使用 PA0 和 PF9 端口,则需使能 GPIOA 和 GPIOF 的时钟:
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOF, ENABLE);
-
配置外部中断占用的 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);
-
使能 SYSCFG 外设时钟:SYSCFG 用于处理外部中断映射,因此需要使能其时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
-
设置中断线与 IO 的映射关系:通过
SYSCFG_EXTILineConfig()
函数设置 GPIO 端口与 EXTI 中断线的映射。例如,将 PA0 映射到 EXTI0:SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
-
配置外部中断参数:使用
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);
-
设置中断优先级(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);
-
编写中断处理函数:中断处理函数的名称必须与启动代码向量表中定义的一致。在函数中,需检测中断标志位,处理完中断后清除标志位。例如,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 中断系统深度剖析
在嵌入式系统开发领域,STM32 系列微控制器凭借其强大的性能和丰富的资源被广泛应用。中断系统作为 STM32 的关键特性之一,能够极大地提升系统的实时响应能力和多任务处理效率。本文将基于 STM32F4 系列芯片,深入剖析中断与外设中断的原理、配…...
List findIntersection getUnion
List findIntersection & getUnion 求两个列表的交集和并集 package zwf;import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List;/*** 列表工具类* * author ZengWenFeng* date 2025.04.22* mobile 13805029595* email 117791303qq.com*/ p…...
【微服务】SpringBoot制作Docker镜像接入SkyWalking详解
目录 一、前言 二、SkyWalking介绍 2.1 SkyWalking是什么 2.2 SkyWalking核心功能 2.3 SkyWalking整体架构 2.4 SkyWalking主要工作流程 三、前置准备 3.1 搭建SkyWalking服务 3.1.1 下载安装包 3.1.2 上传服务器目录 2.1.3 数据库持久化配置说明 3.1.4 启动skywalk…...
豪越科技消防公车管理系统:智能化保障应急救援效率
近期消防车辆管理暴露出的问题,凸显了传统管理模式的不足。在应急救援任务日益繁重的背景下,消防部门对公车管理提出了更高要求。豪越科技针对消防行业特殊需求,研发了专业的消防公车管理系统,通过"线上提交申请-线上审批-线…...
vscode本地docker gdb调试python
背景 最近在部署测试一个工程,不想配环境,拉官方镜像下来跑的,不幸地是,程序运行有点问题。想要debug一下,又不想在终端gdb,想要在vscode中点点点,所以有了下面的一顿配置。 vscode python常用…...
Electron使用WebAssembly实现CRC-32 原理校验
Electron使用WebAssembly实现CRC-32 原理校验 将C/C语言代码,经由WebAssembly编译为库函数,可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-32 原理格式校验的方式。 CRC-32 原理校验函数WebAssembly源文件 C语言实现C…...
Java求职面试:从Spring Boot到微服务的全面考核
面试场景: 在某互联网大厂的面试室内,面试官严肃地坐在桌子后面,面前是几本厚厚的技术书籍。而我们的主人公,搞笑的水货程序员赵大宝,则带着他标志性的微笑走进了房间。 第一轮提问: 面试官:…...
Electron主进程渲染进程间通信的方式
在 Electron 中,主进程和渲染进程之间的通信主要通过 IPC(进程间通信)机制实现。以下是几种常见的通信方式: 1. 渲染进程向主进程发送消息(单向) 渲染进程可以通过 ipcRenderer.send 向主进程发送消息&am…...
Spring Boot 主模块 spring-boot 核心技术解析:从启动类到内嵌容器的无缝支持
在现代企业级应用的开发中,构建高效、简洁的应用框架是至关重要的。Spring Boot 作为 Spring 生态系统的重要一员,凭借其“约定优于配置”的理念,极大简化了传统 Spring 应用的开发过程。通过内嵌的容器支持、自动配置功能以及灵活的外部化配…...
盈达科技GEO解决方案:破解AI时代品牌增长困局
盈达科技GEO解决方案:破解AI时代品牌增长困局 ——全域优化策略助力企业抢占生成式AI流量高地 一、客户痛点:AI重构规则下的三大生存危机 1. 信任危机:AI放大负面杀伤力 财务隐患:上市公司因财报误读导致股价波动 产品质量&…...
安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景
随着科技的不断进步,增强现实(AR)技术逐渐在多个领域展现出其独特的优势,尤其是在安保和安防方面。AR眼镜凭借其先进的功能,在机场、车站、海关、港口、工厂、园区、消防局和警察局等行业中为安保人员提供了更为高效、…...
蓝牙 6.0 发布,解锁无线科技新可能
在5G和Wi-Fi 7高速发展的时代,蓝牙技术始终以独特优势深度融入日常生活。从无线耳机到智能家居,它凭借低功耗、高兼容的特性,悄然连接各类智能设备,打造无缝的数字生活体验。无论是聆听音乐、智能门禁还是健康监测,蓝牙…...
redis数据类型-地理空间GEO
redis数据类型-地理空间GEO 文档 redis单机安装redis常用的五种数据类型redis数据类型-位图bitmapredis数据类型-基数统计HyperLogLog 说明 官网操作命令指南页面:https://redis.io/docs/latest/commands/?nameget&groupstring 地理空间:GEO …...
2023蓝帽杯初赛内存取证-5
直接查找关键词”xlsx“,但是使用filescna失败了,换成mftparser倒是成功: vol.py -f memdump.mem --profile Win7SP1x64 filescan | grep -E "xlsx" vol.py -f memdump.mem --profile Win7SP1x64 mftparser | grep -E "xlsx&…...
安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验
【AR眼镜:重新定义远程会诊体验】 在快速发展的医疗领域,安宝特医疗AR眼镜以其尖端技术和创新功能,引领远程会诊的未来,致力于为为医生和患者带来更高效、精准和无缝的医疗体验。 探索安宝特医疗AR眼镜如何在医疗行业中引领新风潮…...
RT-Thread学习笔记(三)
RT-Thread学习笔记 时钟管理时钟节拍获取系统节拍定时器系统定时器初始化定时器工作机制动态创建定时器静态创建定时器定时器控制高精度延时函数 时钟管理 操作系统需要通过时间来规范其任务 时钟节拍 任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间…...
【HTTPS协议原理】数据加密、如何防止中间人攻击、证书和签名、HTTPS完整工作流程
⭐️个人主页:小羊 ⭐️所属专栏:Linux网络 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 数据加密常见的加密方式数据摘要方案一:仅使用对称加密方案二:仅使用非对称加密方案三:双…...
Springboot 集成 RBAC 模型实战指南
RBAC 模型核心原理 详情可参考之前的笔记:https://blog.csdn.net/qq_35201802/article/details/146036789?spm1011.2415.3001.5331 RBAC 定义与优势 RBAC(Role-Based Access Control,基于角色的访问控制)** 是一种通过角色关联…...
C++继承(最详细)
目录 1.继承的概念以及定义 1.1 继承的概念 1.2 继承的定义 编辑 2.继承中的作用域 3.基类和派生类间的转换 4.派生类的默认成员函数 5.实现不被继承的类 6.継承与友元 编辑 7.继承与静态成员 8.多继承及其菱形继承问题 8.2 虚继承 8.3 来看一个小题 9.继承…...
【使用Plink检测ROH问题查找】为什么检测ROH参数不一样,FROH近交系数结果差异很大?
为什么检测ROH参数不一样,结果差异很大? 结果 基于ROH检测的结果与参数设置密切相关。参数的改变(对应近交系数改变)可能会对结果产生很大影响。 原因 ROH分析缺乏共识标准,这种缺乏共识将导致结果偏倚,…...
mybatis mapper.xml中使用枚举
重点:application.propertis配置类 #TypeEnumHandler 这个类的包名,不是全路径 mybatis.type-handlers-packagecom.fan.test.handler两个枚举类: public enum StatusEnum {DELETED(0),ACTIVE(1);private final int code;StatusEnum(int cod…...
探索科技的边界:代理IP与汽车产业链的创新之旅
目录 一、代理IP:汽车产业的"数字放大镜" 二、创新应用场景:从实验室到量产线 三、技术挑战与进化方向 四、未来图景:车联网时代的"数字血管" 结语:重构产业认知的"数字齿轮" 在数字化浪潮席卷…...
单个或批量实现-提取PDF文档中的合同号和姓名并按“合同号_姓名”格式重命名文件。
第一、单个PDF文件命名格式: 提取PDF文档中的合同号和姓名并按“合同号_姓名”格式重命名文件 import pdfplumber import re import osdef extract_contract_info(pdf_path):with pdfplumber.open(pdf_path) as pdf:for page in pdf.pages:text page.extract_tex…...
虚拟机的网络配置
第一章 配置网络(注意NAT类型) 1. 在VMware中配置 虚拟网络编译器 1) 点击编辑 就会出现 虚拟网络编译器 并点击(要再虚拟机关机的情况下进行) 2)点击右下角的 更改设置 再点击 VMnet 红色框里192.168.x…...
JAVA设计模式——(二)组合模式
JAVA设计模式——(二)组合模式 原理解释实现定义规范接口定义主干定义分支定义叶子测试代码 优势 原理 组合模式用于描述对象在“整体-部分”中的关系,用户对单个对象和组合对象的使用具有一致性。 组合模式中由于单个对象和组合对象的使用…...
【数据结构和算法】5. 堆栈和队列
本文根据 数据结构和算法入门 视频记录 文章目录 1. 堆栈(Stack)1.1 概念1.2 数组栈实现1.3 链式栈实现 2. 队列(Queue)2.1 概念2.2 数组队列实现2.3 链式队列实现 在这一章我们来了解两个很特殊的数据结构:堆栈 (Stac…...
万字长文 | Apache SeaTunnel 分离集群模式部署 K8s 集群实践
文章作者:雷宝鑫 整理排版:白鲸开源 曾辉 Apache SeaTunnel官网链接: https://seatunnel.apache.org/ Apache SeaTunnel(以下简称SeaTunnel)是一款新一代高性能、分布式的数据集成同步工具,正受到业界广泛关注和应用。SeaTunnel支…...
逻辑回归:使用 S 型函数进行概率预测
逻辑回归:使用 S 型函数进行概率预测 摘要 本文章深入探讨了逻辑回归模型如何利用 S 型函数将线性回归的输出转换为概率值。文章详细阐述了 S 型函数的数学原理、在逻辑回归中的应用以及其在机器学习中的重要性。通过具体示例和练习,帮助读者理解如何使…...
马浩棋:产通链CT-Chain 破局不动产 RWA,引领数智金融新变革
全球不动产 RWA 数智金融高峰论坛上马浩棋先生致辞 在全球不动产 RWA 数智金融高峰论坛暨产通链 CT-Chain 上链首发会的现场,犀牛世纪集团(香港)有限公司董事会主席马浩棋成为众人瞩目的焦点。此次盛会汇聚了全球金融、区块链及不动产领域的…...
iscsi服务端安装及配置
1. 安装targetcli软件包 yum install -y targetcli 2. 启动target服务 systemctl start target systemctl enable target 3. 配置防火墙 firewall-cmd --add-port"3260/tcp" 3. 准备一个物理分区(或者逻辑分区)…...
常见的神经网络权重文件格式及其详细说明
常见的神经网络权重文件格式及其详细说明的表格: 扩展名所属框架/工具如何生成表示内容使用方法注意事项.pt, .pthPyTorchtorch.save(model.state_dict(), "model.pt")PyTorch模型的状态字典(权重和参数)或整个模型加载方式&#…...
帕金森发病类型和阶段
文章目录 直观认识帕金森综合症的类型一、原发性帕金森综合征二、继发性(获得性)帕金森综合征三、帕金森叠加综合征(Atypical Parkinsonism)四、遗传性帕金森综合征五、其他罕见类型推荐文献与资源 PD的病理分期理论(B…...
基于ssm的“安家”儿童福利院管理系统(源码+文档)
项目简介 “安家”儿童福利院实现了以下功能: “安家”儿童福利院管理系统的主要使用者分为管理员:儿童管理、申请领养管理、捐赠管理、楼栋管理、宿舍管理、分配信息管理、宿舍物品管理、报修管理、维修工管理、报修状态管理、留言管理、系统管理。 用…...
闲聊人工智能对媒体的影响
技术总是不断地改变信息的传播方式。互联网促进了社交媒体的蓬勃发展。 网络媒体成为主流。大语言模型为代表的人工智能的出现,又会对媒体传播带来怎样的改变呢?媒体的演变反映了社会和技术的演变。 人工智能(AI) 将继续对整个媒体行业产生变革性的影响。…...
健身房管理系统(springboot+ssm+vue+mysql)含运行文档
健身房管理系统(springbootssmvuemysql)含运行文档 健身房管理系统是一个全面的解决方案,旨在帮助健身房高效管理其运营。系统提供多种功能模块,包括会员管理、员工管理、会员卡管理、教练信息管理、解聘管理、健身项目管理、指导项目管理、健身器材管理…...
离散化区间和 java c++
文章目录 题面解题思路javacpp 题面 题目链接:点击传送 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。 现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。 接下来,进行 m 次询问,每…...
「数据可视化 D3系列」入门第十二章:树状图详解与实践
树状图深度解析与实现 一、核心API解析1. d3.hierarchy2. d3.tree3. 节点操作方法 二、完整实现解析三、高级技巧与优化四、常见问题解决小结下章预告:地图可视化 树状图是一种常见的层次结构可视化方式,它能够清晰地展示数据之间的父子关系。本文将详细…...
IDEA 创建Maven 工程(图文)
设置Maven 仓库 打开IDEA 开发工具,我的版本是2024.3.1(每个版本的位置不一样)。在【Customize】选项中,可以直接设置【语言】,在最下面选择【All setting】。 进入到熟悉的配置界面,选择配置的【setting…...
机器学习06-RNN
RNN(循环神经网络)学习笔记 一、RNN 概述 循环神经网络(Recurrent Neural Network,RNN)是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神…...
Java常用正则表达式及使用方法
在 Java 中,Pattern 和 Matcher 类是 java.util.regex 包的核心,用于处理正则表达式。 Pattern 类 Pattern 类表示编译后的正则表达式,它提供了一种将正则表达式字符串编译成可执行对象的方式,以便后续用于匹配操作。 常用方法…...
新零售行业时代:如何用科技驱动传统零售的转型升级
新零售行业时代:如何用科技驱动传统零售的转型升级 “在变化的世界中,唯一不变的是变化本身。” 一、传统零售的困局:当“生存”成为一场鏖战 街角的便利店老板老王,每天凌晨4点起床进货,却在月…...
DeepSeek和Excel结合生成动态图表
文章目录 一、前言二、3D柱状图案例2.1、pyecharts可视化官网2.2、Bar3d-Bar3d_puch_card2.3、Deepseek2.4、WPS2.5、动态调整数据 一、前言 最近在找一些比较炫酷的动态图表,用于日常汇报,于是找到了 DeepseekExcel王牌组合,其等同于动态图…...
大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA)
大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA) 1、分组查询注意力(GQA)的动机2、 多头注意力(Multi-Head Attention, MHA)3、 多查询注意力 (Multi-Query Attention,MQA)4、 分组查…...
WordPress 只能访问html文件,不能访问php
部署WordPress 遇到的问题 说来惭愧,尝试了多次流程,输入ip能够访问到配置路径下面的html文件,但就是无法访问php文件,查来查去,最后在AI工具的逐一梳理下,是PHP-FPM配置下面出的问题,默认账号…...
Python 之 pyecharts 使用
要说绘制动态图表,echarts 肯定是有一席之地的,特别是像 flask 这种轻量级的 web 框架,在 html 中动态嵌入生成 echarts 无疑是很优的选择。pyecharts 简单来说就是以 python 的方式来生成对应的 echarts 图表。 安装 pip install pyechart…...
【第九章 Python学习之函数Ⅱ】
【2025】Python最新最完整教程,零基础看这一个就够了 第九章 Python学习之函数Ⅱ 文章目录 【2025】Python最新最完整教程,零基础看这一个就够了前言一、说两句二、定义函数函数定义规则函数的参数参数的类型及用途1. 必需参数(位置参数)2. 关键字参数3. 默认参数4. 可变参…...
传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100。
### Error updating database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100。 这是因为集合数据量过大,需要对集合进行拆分操作࿰…...
IDEA热加载
翻译:"你运行的应用程序 BfApplication 启动之后,它的一些类文件(通常是你修改过的 .java 文件被重新编译了)发生了变化。你想现在就重新加载这些更改过的类吗?" 解释: 热重载: 这是一种开发时非常有用的技术。当你…...
常用第三方库:dio网络库使用与封装
常用第三方库:dio网络库使用与封装 前言 dio是Flutter生态中最受欢迎的网络请求库之一,它提供了强大的功能和灵活的配置选项。本文将从实战角度深入介绍dio的使用技巧和最佳实践。 基础知识 1. dio简介 dio是一个强大的Dart Http请求库,…...
解决IntelliJ IDEA配置文件(application.properties)中文注释变成乱码的问题
文章目录 1. 问题呈现2. 问题产生的原因3. 解决方法 更多 IntelliJ IDEA 的使用技巧可查看 IntelliJ IDEA 专栏中的文章:IntelliJ IDEA 1. 问题呈现 在 IntelliJ IDEA 中打开配置文件(application.properties)时,文件中的中文注…...