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

stm32 - 中断

stm32 - 中断

  • 概念
  • 中断向量表
  • NVIC 嵌套中断向量控制器
    • 优先级
  • 中断
    • EXTI
      • 概念
      • 基本结构
      • 例子- 对射式红外传感器计次
      • 例子 - 旋转编码器

概念

stm32 支持的中断资源(都属于外设)

  • EXTI
  • TIM
  • ADC
  • USARt
  • SPI
  • I2C

stm32支持的中断

内核中断
外设中断

中断通道与优先级

一个外设可能占用多个中断通道(一个EXTI外设模块,可以有多个中断通道)
每个中断通道有16个优先级

中断向量表

自定义的中断服务函数,由编译器随机指定函数地址
stm32的中断,由于硬件的限制,只能跳到固定的地址执行程序
为了能让硬件跳转到一个不固定的中断函数中, 需要在内存中定义一个地址列表,这个列表的地址是固定的,中断发生后,先跳到这个固定位置,然后在这个固定位置,由编译器加上一条跳转到中断函数的代码,这样中断就可以跳转到任意位置了

NVIC 嵌套中断向量控制器

用于同一分配中断优先级和管理中断的,NVIC是一个内核外设

一个外设可能占用多个中断通道,所以有n条线
NVIC只有一个输出口,其根据每个中断的优先级分配中断的先后顺序
然后通过仅有的一个输出口,通知CPU应该处理哪个中断

在这里插入图片描述

优先级

  • 响应优先级:“插队看病”
  • 抢占优先级:“中断嵌套”

NVIC中断优先级由优先级寄存器的4位(0~15)决定,数值越小优先级越高
高n位为抢占优先级,4-n位为响应优先级
抢占优先级高的可以中断嵌套,响应优先高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队

中断

EXTI

检测指定GPIO的电平信号
电平信号发生变化时,EXTI申请中断

概念

触发方式

上升沿(低->高)触发中断
下降沿(高->低)触发中断
双边沿(上升沿和下降沿都可以触发中断)
软件触发:引脚电平未发生变化,通过在软件中调用执行代码触发中断

GPIO

任意的GPIO口都可以当做外部中断的引脚,但是相同的pin引脚不能同时触发中断(PA0/PB0; PA1/PB1/PC1)

通道数

16个GPIO_pin,外加PVD输出,RTC闹钟,USB唤醒,以太网唤醒

触发响应方式

中断响应:申请中断,让CPU执行中断函数
事件响应: 当外部中断检测到引脚电平变化时,正常的流程是选择触发中断,也可以选择触发事件,那么外部中断的信号就不会通向CPU了,而是通向其他外设,用来触发其他外设的操作

基本结构

EXTI模块支持20个中断通道数,16个pin_脚+PVD+RTC+USB+ETH

针对GPIO,利用AFIO进行中断选择(当使用GPIO实现外部中断时)

PA0/PB0/PC0… 通过AFIO选择器选择一个作为pin_0通道
PA1/PB1/PC1… 通过AFIO选择器选择一个作为pin_1通道
PA2/PB2/PC2… 通过AFIO选择器选择一个作为pin_2通道

每个通道有16可配置优先级,通过NVIC进行优先级配置
NVIC可以进行优先级分组(抢占/响应),每个分组都有取值范围,不同的取值范围,在CPU进行中断服务的时机不同

注意16个引脚输入通道,最终只有7个输入,其中9-5和15-10便成了路两路输出通道,因此需要中断标志位判断哪一个中断过来
在这里插入图片描述
在这里插入图片描述

PB14引脚的电平信号就可以通过AFIO进入到EXTI电路中
在这里插入图片描述

例子- 对射式红外传感器计次

main.c

#include "stm32f10x.h"
#include "OLED.h"
#include "infrCountSensor.h"int main()
{OLED_Init();OLED_ShowString(1,1,"helloworld");OLED_ShowString(2,1,"count: ");InfrCountSensor_Init(14);while (1) {OLED_ShowNum(2,8,InfrCountSensor_GetCount(),8);}
}

infrCountSensor.h

#ifndef __INFRCOUNTSENSOR_H__
#define __INFRCOUNTSENSOR_H__
#include "stm32f10x.h"
void InfrCountSensor_Init(unsigned char pin_num);
unsigned int InfrCountSensor_GetCount();
uint16_t GPIO_Pin_Num_Set(uint16_t pin_num);
uint8_t GPIO_AFIO_Pin_Num_Select(uint16_t pin_num);
uint32_t EXTI_Line_Set(unsigned char pin_num);
#endif

infrCountSensor.c

#include "infrCountSensor.h"static unsigned int infrCountSensor_count;uint16_t GPIO_Pin_Num_Set(uint16_t pin_num)
{uint16_t GPIO_Pin_num=0;switch (pin_num){case 0: {return GPIO_Pin_0;break;}case 1: {return GPIO_Pin_1;break;}case 2: {return GPIO_Pin_2;break;}case 3: {return GPIO_Pin_3;break;}case 4: {return GPIO_Pin_4;break;}case 5: {return GPIO_Pin_5;break;}case 6: {return GPIO_Pin_6;break;}case 7: {return GPIO_Pin_7;break;}case 8: {return GPIO_Pin_8;break;}case 9: {return GPIO_Pin_9;break;}case 10: {return GPIO_Pin_10;break;}case 11: {return GPIO_Pin_11;break;}case 12: {return GPIO_Pin_12;break;}case 13: {return GPIO_Pin_13;break;}case 14: {return GPIO_Pin_14;break;}case 15: {return GPIO_Pin_14;break;}default: return GPIO_Pin_num;}}uint8_t GPIO_AFIO_Pin_Num_Select(uint16_t pin_num)
{uint8_t AFIO_Pin_num=0;switch (pin_num){case 0: {return GPIO_PinSource0;break;}case 1: {return GPIO_PinSource1;break;}case 2: {return GPIO_PinSource2;break;}case 3: {return GPIO_PinSource3;break;}case 4: {return GPIO_PinSource4;break;}case 5: {return GPIO_PinSource5;break;}case 6: {return GPIO_PinSource6;break;}case 7: {return GPIO_PinSource7;break;}case 8: {return GPIO_PinSource8;break;}case 9: {return GPIO_PinSource9;break;}case 10: {return GPIO_PinSource10;break;}case 11: {return GPIO_PinSource11;break;}case 12: {return GPIO_PinSource12;break;}case 13: {return GPIO_PinSource13;break;}case 14: {return GPIO_PinSource14;break;}case 15: {return GPIO_PinSource14;break;}default: return AFIO_Pin_num;}
}uint32_t EXTI_Line_Set(unsigned char pin_num)
{uint32_t EXTI_Line_num=0;switch (pin_num){case 0: {return EXTI_Line0;break;}case 1: {return EXTI_Line1;break;}case 2: {return EXTI_Line2;break;}case 3: {return EXTI_Line3;break;}case 4: {return EXTI_Line4;break;}case 5: {return EXTI_Line5;break;}case 6: {return EXTI_Line6;break;}case 7: {return EXTI_Line7;break;}case 8: {return EXTI_Line8;break;}case 9: {return EXTI_Line9;break;}case 10: {return EXTI_Line10;break;}case 11: {return EXTI_Line11;break;}case 12: {return EXTI_Line12;break;}case 13: {return EXTI_Line13;break;}case 14: {return EXTI_Line14;break;}case 15: {return EXTI_Line15;break;}default: return EXTI_Line_num;}
}void InfrCountSensor_Init(unsigned char pin_num)
{// 打开GPIO/AFIO时钟// GPIO和AFIO是APB2总线的外设,需要手动开启时钟,RCC用于配置内核外的外设时钟// EXIT中断默认开始时钟,NVIC是内核外设(内核外设也无需开启时钟)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);// 配置GPIO 输入模式uint16_t GPIO_Pin_num=0;GPIO_Pin_num=GPIO_Pin_Num_Set(pin_num);GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;		// 上拉输入GPIO_InitStructure.GPIO_Pin=GPIO_Pin_num;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);// 配置AFIO 选择器(中断引脚选择)// GPIO_AFIODeInit(); 		// 清空配置// GPIO_PinLockConfig(); 	// 锁定引脚,防止意外被更改// GPIO_PinRemapConfig(); 		// 引脚重映射// 选择指定的GPIO / pin 作为外部中断源uint8_t AFIO_Pin_num=0;AFIO_Pin_num=GPIO_AFIO_Pin_Num_Select(pin_num);GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,AFIO_Pin_num); // 配置数据选择器,// AFIO_Pin_num 是AFIO的中断选择器号,这里是第14个数据选择器// 配置EXTI中断,触发方式,触发响应方式// EXTI_DeInit(); 		// 清除配置// EXTI_StructInit(); 	// 结构体赋值// EXTI_GenerateSWinterrupt(); // 软件触发// 外部中断的外部状态寄存器会设置对应的标志位// 在主程序中读写外部中断标志位,在中断服务函数中读写外部中断标志位uint32_t EXTI_Line_num=0;EXTI_Line_num=EXTI_Line_Set(pin_num);EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line_num;				// 指定要配置的中断线,中断EXTI输入通道EXTI_InitStructure.EXTI_LineCmd=ENABLE;					// 中断线的新状态,开启中断EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt ;		// 中断模式interrupt或事件模式eventEXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;	//触发方式,下降沿EXTI_Init(&EXTI_InitStructure); 						// 初始化// 配置NVIC,中断优先级,进入CPU再执行中断程序NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 中断分组,两位抢占,两位响应NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;		// 中断EXTI输出通道,15-10占用一个通道,在中断服务函数中需要判断中断标志位NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;	// 抢占优先级(在抢占中断中)NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;		// 响应优先级 (在响应中断中)NVIC_Init(&NVIC_InitStructure);
}void EXTI15_10_IRQHandler(void) // 中断函数
{// 中断标志位的判断if (EXTI_GetITStatus(EXTI_Line14)==SET){// 清楚中断标志位EXTI_ClearITPendingBit(EXTI_Line14);infrCountSensor_count++;}
}unsigned int InfrCountSensor_GetCount()
{return infrCountSensor_count;
}

例子 - 旋转编码器

对于两个中断,AFIO、EXTI、NVIC的code方式

main.c

#include "stm32f10x.h"
#include "Delay.h"
#include "LED.h"
#include "key.h"
#include "Buzzer.h"
#include "PhotoSensor.h"
#include "OLED.h"
#include "infrCountSensor.h"
#include "encoder.h"int main()
{OLED_Init();OLED_ShowString(1,1,"helloworld");OLED_ShowString(2,1,"count: ");Encoder_Init();while (1) {OLED_ShowSignedNum(2,8,Encoder_Get(),8);}
}

encoder.h

#ifndef __ENCODER_H__
#define __ENCODER_H__#include "stm32f10x.h"
void Encoder_Init();
int16_t Encoder_Get();
#endif

encoder.c

#include "encoder.h"int16_t encoder_rotate;void Encoder_Init()
{// 打开GPIO/AFIO时钟// GPIO和AFIO是APB2总线的外设,需要手动开启时钟,RCC用于配置内核外的外设时钟// EXIT中断默认开始时钟,NVIC是内核外设(内核外设也无需开启时钟)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);// 配置GPIO 输入模式GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;		// 上拉输入GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);// 配置AFIO 选择器(中断引脚选择)// 选择指定的GPIO / pin 作为外部中断源GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0); // 配置数据选择器,// AFIO_Pin_num 是AFIO的中断选择器号,这里是第14个数据选择器GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource1); // 配置数据选择器,// AFIO_Pin_num 是AFIO的中断选择器号,这里是第14个数据选择器// 配置EXTI中断,触发方式,触发响应方式// 外部中断的外部状态寄存器会设置对应的标志位// 在主程序中读写外部中断标志位,在中断服务函数中读写外部中断标志位;EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line0 | EXTI_Line1;				// 指定要配置的中断线,中断EXTI输入通道EXTI_InitStructure.EXTI_LineCmd=ENABLE;					// 中断线的新状态,开启中断EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt ;		// 中断模式interrupt或事件模式eventEXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;	//触发方式,下降沿EXTI_Init(&EXTI_InitStructure); 						// 初始化// 对两个通道分别设置优先级// 配置NVIC,中断优先级,进入CPU再执行中断程序NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 中断分组,两位抢占,两位响应NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;		// 中断EXTI输出通道NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;	// 抢占优先级(在抢占中断中)NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;		// 响应优先级 (在响应中断中)NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel=EXTI1_IRQn;		// 中断EXTI输出通道NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;	// 抢占优先级(在抢占中断中)NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;		// 响应优先级 (在响应中断中)NVIC_Init(&NVIC_InitStructure);
}void EXTI0_IRQHandler()
{if (EXTI_GetITStatus(EXTI_Line0)==SET){EXTI_ClearITPendingBit(EXTI_Line0);if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==0){encoder_rotate--;} }
}void EXTI1_IRQHandler()
{if (EXTI_GetITStatus(EXTI_Line1)==SET){EXTI_ClearITPendingBit(EXTI_Line1);if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)==0){encoder_rotate++;} }
}int16_t Encoder_Get()
{return encoder_rotate;
}

相关文章:

stm32 - 中断

stm32 - 中断 概念中断向量表NVIC 嵌套中断向量控制器优先级 中断EXTI概念基本结构例子- 对射式红外传感器计次例子 - 旋转编码器 概念 stm32 支持的中断资源(都属于外设) EXTITIMADCUSARtSPII2C stm32支持的中断 内核中断 外设中断 中断通道与优先级 一…...

【洛谷 P1216】[USACO1.5] [IOI1994]数字三角形 Number Triangles 题解(动态规划)

[USACO1.5] [IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中,从 7 → 3 → 8 →…...

十四天学会C++之第四天(面向对象编程基础)

类和对象是什么? 在C中,类是一种用户定义的数据类型,它可以包含数据成员(也就是属性)和成员函数(也就是方法)。类是一种模板或蓝图,用于创建具体的对象。 对象是类的实例&#xff…...

复习Day09:哈希表part02:141.环形链表、142. 环形链表II、454.四数相加II、383赎金信

之前的blog:https://blog.csdn.net/weixin_43303286/article/details/131765317 我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用…...

Internet通过TCP/IP协议可以实现多个网络的无缝连接

Internet通过TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)协议实现多个网络的无缝连接。 TCP/IP是Internet的基础通信协议套件,它定义了数据如何在不同网络之间传输和路由,使得…...

互联网Java工程师面试题·Dubbo 篇·第二弹

目录 18、Dubbo 用到哪些设计模式? 19、Dubbo 配置文件是如何加载到 Spring 中的? 20、Dubbo SPI 和 Java SPI 区别? 21、Dubbo 支持分布式事务吗? 22、Dubbo 可以对结果进行缓存吗? 23、服务上线怎么兼容旧版本&…...

(c语言)经典bug

#include<stdio.h> //经典bug int main() { int i 0; int arr[10] {1,2,3,4,5,6,7,8,9,10}; for (i 0; i < 12; i) //越界访问 { arr[i] 0; printf("hehe\n"); } return 0; } 注&#xff1a;输出结果为死循…...

用于工业物联网和自动化的 Apache Kafka、KSQL 和 Apache PLC4

由于单一系统和专有协议&#xff0c;数据集成和处理是工业物联网&#xff08;IIoT&#xff0c;又名工业 4.0 或自动化工业&#xff09;中的巨大挑战。Apache Kafka、其生态系统&#xff08;Kafka Connect、KSQL&#xff09;和 Apache PLC4X 是以可扩展、可靠和灵活的方式实现端…...

1.1.1开发基础-硬件-万用表

​ 1 万用表 万用表又叫多用表、三用表、复用表,是一种多功能、多量程的测量仪表,一般万用表可测量直流电流、直流电压、交流电压、电阻和音频电平等,有的还可以测交流电流、电容量、电感量及半导体的一些参数,是最常用、最简单的测试设备。 万用表是一种多功能多量程的便…...

Mysql内置函数、复合查询和内外连笔记

目录 一、mysql内置函数 1.1.日期函数 1.2.字符串函数 1.3.数学函数 1.4.其他函数 二、复合查询 2.2 自连接 2.3 子查询 2.3.1单行自查询 2.3.2 多行子查询 2.3.3 多列子查询 2.3.4在from子句中使用子查询 2.3.5合并查询 三、表的内连和外连 3.1内连接 3.2外连接…...

【VUE·疑难问题】定义 table 中每行的高度(使用 element-UI)

一、如何定义 table 中每一行的 height &#xff1f; 1.table例子 <!-- 二、table --><div style"overflow: hidden;display: block;height: 68vh;width: 100%;"><el-table stripe show-header style"width: 100%" :data"tableData&q…...

【重拾C语言】四、循环程序设计(后判断条件循环、先判断条件循环、多重循环;典例:计算平均成绩、打印素数、百钱百鸡问题)

目录 前言 四、循环程序设计 4.1 计算平均成绩——循环程序 4.1.1 后判断条件的循环 a. 语法 b. 典例 4.1.2 先判断条件的循环 a. 语法 b. 典例 4.1.3 for语句 a. 语法 b. 典例 4.2 计算全班每人平均成绩—多重循环 4.2.1 打印100以内素数 4.2.2 百钱百…...

Linux 安装 Gitlab

1、到官网下载Gitlab安装包 (如果是Centos&#xff0c;到el目录下载)。下载GitLab 2、安装依赖软件 sudo yum install -y policycoreutils-python3、安装gitlab sudo rpm -i gitlab-jh-16.3.4-jh.0.el7.x86_64.rpm 4、修改 gitlab.rb sudo vi /etc/gitlab/gitlab.rb 5、g…...

stm32-SPI协议

SPI协议详解&#xff08;图文并茂超详细&#xff09; SPI通讯协议 于是我们想有没有更好一点的串行通讯方式&#xff1b;相比较于UART&#xff0c;SPI的工作方式略有不同。 SPI是一个同步的数据总线&#xff0c;也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和…...

想要精通算法和SQL的成长之路 - 并查集的运用和案例(省份数量)

想要精通算法和SQL的成长之路 - 并查集的运用 前言一. 并查集的使用和模板1.1 初始化1.2 find 查找函数1.3 union 合并集合1.4 connected 判断相连性1.5 完整代码 二. 运用案例 - 省份数量 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 并查集的使用和模板 先说一下并查集…...

解决内网拉取企微会话存档代理问题的一种办法

问题&#xff1a;客户的服务都是内网的&#xff0c;不能直接访问外网&#xff1b;访问外网的话需要走kong网关才能出去。 会话存档官网说可以使用socket5、http方式拉取会话存档&#xff1b;我这边尝试了直接使用kong网关的ip和端口配置进去&#xff0c;是访问不了的 我后面就…...

二十二,加上各种贴图

使用pbr的各种贴图&#xff0c;albedo,金属度&#xff0c;ao,法线&#xff0c;粗糙度&#xff0c;可以更好的控制各个片元 1&#xff0c;先加上纹理坐标 texCoords->push_back(osg::Vec2(xSegment, ySegment)); geom->setVertexAttribArray(3, texCoords, osg::Array::BI…...

新版校园跑腿独立版小程序源码 多校版本,多模块,适合跑腿,外卖,表白,二手,快递等校园服务

最新校园跑腿小程序源码 多校版本&#xff0c;多模块&#xff0c;适合跑腿&#xff0c;外卖&#xff0c;表白&#xff0c;二手&#xff0c;快递等校园服务 此版本为独立版本&#xff0c;不需要** 直接放入就可以 需要自己准备好后台的服务器&#xff0c;已认证的小程序&#xf…...

SpringBoot banner 样式 自动生成

目录 SpringBoot banner 样式 自动生成 图案网站&#xff1a; 1.第一步创建banner.txt文件 2.访问网站Ascii艺术字实现个性化Spring Boot启动banner图案&#xff0c;轻松修改更换banner.txt文件内容&#xff0c;收集了丰富的banner艺术字和图&#xff0c;并且支持中文banner下…...

回收站里面删除的照片如何恢复?

现在拍照已经成为人们生活中的一种方式&#xff0c;照片为我们保留了许多珍贵而美好的回忆。大家通常会把重要的照片保存在硬盘里&#xff0c;但当不小心把照片移入回收站并彻底删除时&#xff0c;情况就有点糟糕了。那么&#xff0c;回收站里删除的照片还有办法恢复吗&#xf…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...