STC15中断系统介绍
STC15中断系统介绍
- ✨本篇参考来源于STC官方stc15系列手册:538页- 589页。(文末提供该摘取部分的文档资料)
🎉在官方提供的手册资料中,一个系列一份手册,手册内容涵盖了数据手册和参考手册以及例程案例。对于学习着来说,一份接近15K页的文档,即使有目录,也不好翻阅其相关的内容。所以有必要进行拆解学习。
🌼中断系统
- 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。
- 当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件 ,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统,请示CPU中断的请求源称为中断源。微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU总是先响应优先级别最高的中断请求。
- 当CPU正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的 服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没有中断嵌套功能的中断系统称为单级中断系统。
🔰中断响应规则
- 低优先级中断可被高优先级中断所中断,反之不能。
- 任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断所中断.
🌻STC15系列单片机的中断请求源
🍁中断结构图
- 外部中断0(INT0)和外部中断1(INT1)既可上升沿触发,又可下降沿触发。请求两个外部中断的标志位是位于寄存器TCON中的IE0/TCON.1和IE1/TCON.3。当外部中断服务程序被响应后,中断标志位IE0和IE1会自动被清0。TCON寄存器中的IT0/TCON.0和IT1/TCON.2决定了外部中断0和1是上升沿触发还是下降沿触发。如果ITx = 0(x = 0,1),那么系统在INTx(x = 0,1)脚探测到上升沿或下降沿后均可产生外部中断。如果ITx = 1(x = 0,1),那么系统在INTx( x= 0,1)脚探测下降沿后才可产生外部中断。外部中断0(INT0)和外部中断1(INT1)还可以用于将单片机从掉电模式唤醒。
- 定时器0和1的中断请求标志位是TF0和TF1。当定时器寄存器THx/TLx(x = 0,1)溢出时,溢出标志位TFx(x = 0,1)会被置位,如果定时器0/1的中断被打开,则定时器中断发生。当单片机转去执行该定时器中断时,定时器的溢出标志位TFx(x = 0,1)会被硬件清除。
- 外部中断2(INT2)、外部中断3(INT3)及外部中断4(INT4)都只能下降沿触发。外部中断2~4的中断请求标志位被隐藏起来了,对用户不可见。当相应的中断服务程序被响应后或EXn=0(n=2,3,4),这些中断请求标志位会立即自动地被清0。外部中断2(INT2)、外部中断3(INT3)及外部中断4(INT4)也可以用于将单片机从掉电模式唤醒。
- 定时器2的中断请求标志位被隐藏起来了,对用户不可见。当相应的中断服务程序被响应后或ET2=0,该中断请求标志位会立即自动地被清0
- 定时器3和定时器4的中断请求标志位同样被隐藏起来了,对用户不可见。当相应的中断服务程序被响应后或ET3=0 / ET4=0,该中断请求标志位会立即自动地被清0
- 当串行口1发送或接收完成时,相应的中断请求标志位TI或RI就会被置位,如果串口1中断被打开,向CPU请求中断,单片机转去执行该串口1中断。中断响应后,TI或RI需由软件清零。
- 当串行口2发送或接收完成时,相应的中断请求标志位S2TI或S2RI就会被置位,如果串口2中断被打开,向CPU请求中断,则单片机转去执行该串口2中断。中断响应后,S2TI或S2RI需由软件清零。
- 当串行口3发送或接收完成时,相应的中断请求标志位S3TI或S3RI就会被置位,如果串口3
中断被打开,向CPU请求中断,则单片机转去执行该串口3中断。中断响应后,S3TI或S3RI需由
软件清零。 - 当串行口4发送或接收完成时,相应的中断请求标志位S4TI或S4RI就会被置位,如果串口4中断被打开,向CPU请求中断,则单片机转去执行该串口4中断。中断响应后,S4TI或S4RI需由软件清零。
- A/D转换的中断是由ADC_FLAG/ADC_CONTR.4请求产生的。该位需用软件清除。
- 低压检测(LVD)中断是由LVDF/PCON.5请求产生的。该位也需用软件清除。
- 当同步串行口SPI传输完成时,SPIF/SPCTL.7被置位,如果SPI中断被打开,则向CPU请求中断,单片机转去执行该SPI中断。中断响应完成后,SPIF需通过软件向其写入“1”清零。
- 比较器中断标志位CMPIF=(CMPIF_p || CMPIF_n),其中CMPIF_p是内建的标志比较器上升沿中断的寄存器,CMPIF_n是内建的标志比较器下降沿中断的寄存器;当CPU 去读取 CMPIF的数值时会读(CMPIF_p || CMPIF_n);当CPU 对CMPIF写“0”后CMPIF_p及CMPIF_n会被自动设置为“0”。因此,当比较器的比较结果由LOW变成HIGH时,那么内建的标志比较器上升沿中断的寄存器CMPIF_p会被设置成1,即比较器中断标志位CMPIF也会被设置成1,如果比较器上升沿中断已被允许,即PIE(CMPCR1.5)已被设置成1,则向CPU请求中断,单片机转去执行该比较器上升中断;同理,当比较器的比较结果由HIGH变成LOW时,那么内建的标志比较器下降沿中断的寄存器CMPIF_n会被设置成1,即比较器中断标志位CMPIF也会被设置成1,如果比较器下降沿中断已被允许,即NIE(CMPCR1.4)已被设置成1,则向CPU请求中断,单片机转去执行该比较器下降中断。中断响应完成后,比较器中断标志位CMPIF不会自动被清零,用户需通过软件向其写入“0”清零它。
-
各个中断触发行为总结如下表所示:
🌷中断向量入口地址/查询次序/优先级/请求标志/允许位表
📝在Keil C中如何声明中断函数
void Int0_Routine(void) interrupt 0;
void Timer0_Rountine(void) interrupt 1;
void Int1_Routine(void) interrupt 2;
void Timer1_Rountine(void) interrupt 3;
void UART1_Routine(void) interrupt 4;
void ADC_Routine(void) interrupt 5;
void LVD_Routine(void) interrupt 6;
void PCA_Routine(void) interrupt 7;
void UART2_Routine(void) interrupt 8;
void SPI_Routine(void) interrupt 9;
void Int2_Routine(void) interrupt 10;
void Int3_Routine(void) interrupt 11;
void Timer2_Routine(void) interrupt 12;
void Int4_Routine(void) interrupt 16;
void S3_Routine(void) interrupt 17;
void S4_Routine(void) interrupt 18;
void Timer3_Routine(void) interrupt 19;
void Timer4_Routine(void) interrupt 20;
void Comparator_Routine(void) interrupt 21;
void PWM_Routine(void) interrupt 22;
void PWMFD_Routine(void) interrupt 23;
📋中断寄存器
- STC15W4K32S4系列新增6通道带死区控制的PWM波形发生器的中断相关特殊功能寄存器:
- 中断允许寄存器IE
- EA : CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。EA的作用是使中断允许形成多级控制。即各中断源首先受EA控制;其次还受各中断源自己的中断允许控制位控制。
- ELVD : 低压检测中断允许位,ELVD=1,允许低压检测中断,ELVD=0,禁止低压检测中断。
- EADC : A/D转换中断允许位,EADC=1,允许A/D转换中断,EADC=0,禁止A/D转换中断。
- ES : 串行口1中断允许位,ES=1,允许串行口1中断,ES=0,禁止串行口1中断。
- ET1 : 定时/计数器T1的溢出中断允许位,ET1=1,允许T1中断,ET1=0,禁止T1中断。
- EX1 : 外部中断1中断允许位,EX1=1,允许外部中断1中断,EX1=0,禁止外部中断1中断。
- ET0 : T0的溢出中断允许位,ET0=1允许T0中断,ET0=0禁止T0中断。
- EX0 : 外部中断0中断允许位,EX0=1允许中断,EX0=0禁止中断.
- IE2 : 中断允许寄存器 (不可位寻址)
-
- ET4:定时器4的中断允许位:
ET4=1,允许定时器4产生中断;
ET4=0,禁止定时器4产生中断
- ET4:定时器4的中断允许位:
-
- ET3:定时器3的中断允许位:
ET3=1,允许定时器3产生中断;
ET3=0,禁止定时器3产生中断
- ET3:定时器3的中断允许位:
-
- ES4 : 串行口4中断允许位:
ES4=1,允许串行口4中断;
ES4=0,禁止串行口4中断
- ES4 : 串行口4中断允许位:
-
- ES3 : 串行口3中断允许位:
ES3=1,允许串行口3中断;
ES3=0,禁止串行口3中断。
ET2:定时器2的中断允许位。
ET2=1,允许定时器2产生中断;
ET2=0,禁止定时器2产生中断
- ES3 : 串行口3中断允许位:
-
- ESPI:SPI中断允许位。
ESPI=1,允许SPI中断;
ESPI=0,禁止SPI中断。
- ESPI:SPI中断允许位。
-
- ES2 : 串行口2中断允许位。
ES2=1,允许串行口2中断;
ES2=0,禁止串行口2中断。
- ES2 : 串行口2中断允许位。
- INT_CLKO (AUXR2) : 外部中断允许和时钟输出寄存器
-
- EX4 : 外部中断4(INT4)中断允许位,EX4=1允许中断,EX4=0禁止中断。外部中断4(INT4)只
能下降沿触发。
- EX4 : 外部中断4(INT4)中断允许位,EX4=1允许中断,EX4=0禁止中断。外部中断4(INT4)只
-
- EX3 : 外部中断3(INT3)中断允许位,EX3=1允许中断,EX3=0禁止中断。外部中断3(INT3)也
只能下降沿触发。
- EX3 : 外部中断3(INT3)中断允许位,EX3=1允许中断,EX3=0禁止中断。外部中断3(INT3)也
-
- EX2 : 外部中断2(INT2)中断允许位,EX2=1允许中断,EX2=0禁止中断。外部中断2(INT2)同
样只能下降沿触发。
- EX2 : 外部中断2(INT2)中断允许位,EX2=1允许中断,EX2=0禁止中断。外部中断2(INT2)同
MCKO_S2, T2CLKO, T1CLKO,T0CLKO与中断无关.
-
IP : 中断优先级控制寄存器 (可位寻址)
-
- PPCA: PCA中断优先级控制位。
当PPCA=0时,PCA中断为最低优先级中断(优先级0)
当PPCA=1时,PCA中断为最高优先级中断(优先级1)
- PPCA: PCA中断优先级控制位。
-
- PLVD: 低压检测中断优先级控制位。
当PLVD=0时,低压检测中断为最低优先级中断(优先级0)
当PLVD=1时,低压检测中断为最高优先级中断(优先级1)
- PLVD: 低压检测中断优先级控制位。
-
- PADC: A/D转换中断优先级控制位。
当PADC=0时,A/D转换中断为最低优先级中断(优先级0)
当PADC=1时,A/D转换中断为最高优先级中断(优先级1)
- PADC: A/D转换中断优先级控制位。
-
- PS: 串口1中断优先级控制位。
当PS=0时,串口1中断为最低优先级中断(优先级0)
当PS=1时,串口1中断为最高优先级中断(优先级1)
- PS: 串口1中断优先级控制位。
-
- PT1: 定时器1中断优先级控制位。
当PT1=0时,定时器1中断为最低优先级中断(优先级0)
当PT1=1时,定时器1中断为最高优先级中断(优先级1)
- PT1: 定时器1中断优先级控制位。
-
- PX1: 外部中断1优先级控制位。
当PX1=0时,外部中断1为最低优先级中断(优先级0)
当PX1=1时,外部中断1为最高优先级中断(优先级1)
- PX1: 外部中断1优先级控制位。
-
- PT0: 定时器0中断优先级控制位。
当PT0=0时,定时器0中断为最低优先级中断(优先级0)
当PT0=1时,定时器0中断为最高优先级中断(优先级1)
- PT0: 定时器0中断优先级控制位。
-
- PX0: 外部中断0优先级控制位。
当PX0=0时,外部中断0为最低优先级中断(优先级0)
当PX0=1时,外部中断0为最高优先级中断(优先级1)
- PX0: 外部中断0优先级控制位。
-
IP2 : 中断优先级控制寄存器 (不可位寻址)
-
- PX4: 外部中断4(INT4)优先级控制位。
当PX4=0时,外部中断4(INT4)为最低优先级中断(优先级0)
当PX4=1时,外部中断4(INT4)为最高优先级中断(优先级1)
- PX4: 外部中断4(INT4)优先级控制位。
-
- PPWMFD: PWM异常检测中断优先级控制位。
当PPWMFD=0时,PWM异常检测中断为最低优先级中断(优先级0)
当PPWMFD=1时,PWM异常检测中断为最高优先级中断(优先级1)
- PPWMFD: PWM异常检测中断优先级控制位。
-
- PPWM: PWM中断优先级控制位。
当PPWM=0时,PWM中断为最低优先级中断(优先级0)
当PPWM=1时,PWM中断为最高优先级中断(优先级1)
- PPWM: PWM中断优先级控制位。
-
- PSPI: SPI中断优先级控制位。
当PSPI=0时,SPI中断为最低优先级中断(优先级0)
当PSPI=1时,SPI中断为最高优先级中断(优先级1)
- PSPI: SPI中断优先级控制位。
-
- PS2: 串口2中断优先级控制位。
当PS2=0时,串口2中断为最低优先级中断(优先级0)
当PS2=1时,串口2中断为最高优先级中断(优先级1)
- PS2: 串口2中断优先级控制位。
中断优先级控制寄存器IP和IP2的各位都由可用户程序置“1”和清“0”。但IP寄存器可位操作,所以可用位操作指令或字节操作指令更新IP的内容。而IP2寄存器的内容只能用字节操作指令来更新。STC15系列单片机复位后IP和IP2均为00H,各个中断源均为低优先级中断。
- TCON : 定时器/计数器中断控制寄存器 (可位寻址)
-
- TF1: T1溢出中断标志。T1被允许计数以后,从初值开始加1计数。当产生溢出时由硬件置
“1”TF1,向CPU请求中断,一直保持到CPU响应中断时,才由硬件清“0”(也可由查询软件清“0”)。
- TF1: T1溢出中断标志。T1被允许计数以后,从初值开始加1计数。当产生溢出时由硬件置
-
- TR1: 定时器1的运行控制位。
-
- TF0:T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置
“1”TF0,向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由查询软件清0)。
TR0: 定时器0的运行控制位。
- TF0:T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置
-
- IE1:外部中断1(INT1/P3.3)中断请求标志。IE1=1,外部中断向CPU请求中断,当CPU响应
该中断时由硬件清“0”IE1。
- IE1:外部中断1(INT1/P3.3)中断请求标志。IE1=1,外部中断向CPU请求中断,当CPU响应
-
- IT1:外部中断1中断源类型选择位。IT1=0,INT1/P3.3引脚上的上升沿或下降沿信号均可触发
外部中断1。IT1=1,外部中断1为下降沿触发方式。
- IT1:外部中断1中断源类型选择位。IT1=0,INT1/P3.3引脚上的上升沿或下降沿信号均可触发
-
- IE0:外部中断0(INT0/P3.2)中断请求标志。IE0=1,外部中断0向CPU请求中断,当CPU响
应外部中断时,由硬件清“0”IE0。
- IE0:外部中断0(INT0/P3.2)中断请求标志。IE0=1,外部中断0向CPU请求中断,当CPU响
-
- IT0:外部中断0中断源类型选择位。IT0=0,INT0/P3.2引脚上的上升沿或下降沿均可触发外部
中断0。IT0=1,外部中断0为下降沿触发方式。
- IT0:外部中断0中断源类型选择位。IT0=0,INT0/P3.2引脚上的上升沿或下降沿均可触发外部
- SCON : 串行口控制寄存器 (可位寻址)
-
- RI: 串行口1接收中断标志。若串行口1允许接收且以方式0工作,则每当接收到第8位数据时
置1;若以方式1、2、3工作且SM2=0时,则每当接收到停止位的中间时置1;当串行口以方式2或方式3工作且SM2=1时,则仅当接收到的第9位数据RB8为1后,同时还要接收到停止位的中间时置1。RI为1表示串行口1正向CPU申请中断(接收中断),RI必须由用户的中断服务程序清零。
- RI: 串行口1接收中断标志。若串行口1允许接收且以方式0工作,则每当接收到第8位数据时
-
- TI: 串行口1发送中断标志。串行口1以方式0发送时,每当发送完8位数据,由硬件置1;若以方式1、方式2或方式3发送时,在发送停止位的开始时置1。TI=1表示串行口1正在向CPU申请中断(发送中断)。值得注意的是,CPU响应发送中断请求,转向执行中断服务程序时并不将TI清零,TI必须由用户在中断服务程序中清零。
SCON寄存器的其他位与中断无关。
- S2CON : 串行口2控制寄存器 (不可位寻址)
-
- S2RI: 串行口2接收中断标志。若串行口2允许接收且以方式0工作,则每当接收到第8位数据时
置1;若以方式1、2、3工作且S2SM2=0时,则每当接收到停止位的中间时置1;当串行口2以方式2或方式3工作且S2SM2=1时,则仅当接收到的第9位数据S2RB8为1后,同时还要接收到停止位的中间时置1。S2RI为1表示串行口2正向CPU申请中断(接收中断),S2RI必须由用户的中断服务程序清零。
- S2RI: 串行口2接收中断标志。若串行口2允许接收且以方式0工作,则每当接收到第8位数据时
-
- S2TI:串行口2发送中断标志。串行口2以方式0发送时,每当发送完8位数据,由硬件置1;若以方式1、方式2或方式3发送时,在发送停止位的开始时置1。S2TI=1表示串行口2正在向CPU申请中断(发送中断)。值得注意的是,CPU响应发送中断请求,转向执行中断服务程序时并不将S2TI清零,S2TI必须由用户在中断服务程序中清零。
S2CON寄存器的其他位与中断无关。
- S3CON : 串行口3控制寄存器 (不可位寻址)
-
- S3RI: 串行口3接收中断标志。若串行口3允许接收且以方式0工作,则每当接收到第8位数据时
置1;若以方式1、2、3工作且S3SM2=0时,则每当接收到停止位的中间时置1;当串行口3以方式2或方式3工作且S3SM2=1时,则仅当接收到的第9位数据S3RB8为1后,同时还要接收到停止位的中间时置1。S3RI为1表示串行口3正向CPU申请中断(接收中断),S3RI必须由用户的中断服务程序清零。
- S3RI: 串行口3接收中断标志。若串行口3允许接收且以方式0工作,则每当接收到第8位数据时
-
- S3TI:串行口3发送中断标志。串行口3以方式0发送时,每当发送完8位数据,由硬件置1;若以方式1、方式2或方式3发送时,在发送停止位的开始时置1。S3TI=1表示串行口3正在向CPU申请中断(发送中断)。值得注意的是,CPU响应发送中断请求,转向执行中断服务程序时并不将S3TI清零,S3TI必须由用户在中断服务程序中清零。
S3CON寄存器的其他位与中断无关。
- S4CON : 串行口4控制寄存器 (不可位寻址)
-
- S4RI: 串行口4接收中断标志。若串行口4允许接收且以方式0工作,则每当接收到第8位数据时
置1;若以方式1、2、3工作且S4SM2=0时,则每当接收到停止位的中间时置1;当串行口4以方式2或方式3工作且S4SM2=1时,则仅当接收到的第9位数据S4RB8为1后,同时还要接收到停止位的中间时置1。S4RI为1表示串行口4正向CPU申请中断(接收中断),S4RI必须由用户的中断服务程序清零。
- S4RI: 串行口4接收中断标志。若串行口4允许接收且以方式0工作,则每当接收到第8位数据时
-
- S4TI:串行口4发送中断标志。串行口4以方式0发送时,每当发送完8位数据,由硬件置1;若
以方式1、方式2或方式3发送时,在发送停止位的开始时置1。S4TI=1表示串行口4正在向CPU申请中断(发送中断)。值得注意的是,CPU响应发送中断请求,转向执行中断服务程序时并不将S4TI清零,S4TI必须由用户在中断服务程序中清零。
- S4TI:串行口4发送中断标志。串行口4以方式0发送时,每当发送完8位数据,由硬件置1;若
S4CON寄存器的其他位与中断无关。
- PCON : 电源控制寄存器
-
- LVDF : 低压检测标志位,同时也是低压检测中断请求标志位。
在正常工作和空闲工作状态时,如果内部工作电压Vcc低于低压检测门槛电压,该位自动置1,与低压检测中断是否被允许无关。即在内部工作电压Vcc低于低压检测门槛电压时,不管有没有允许低压检测中断,该位都自动为1。该位要用软件清0,清0后,如 内部工作电压Vcc继续低于低压检测门槛电压,该位又被自动设置为1。
在进入掉电工作状态前,如果低压检测电路未被允许可产生中断,则在进入掉电模式后,该低压检测电路不工作以降低功耗。如果被允许可产生低压检测中断,则在进入掉电模式后,该低压检测电路继续工作,在内部工作电压Vcc低于低压检测门槛电压后,产生低压检测中断,可将MCU从掉电状态唤醒。
- LVDF : 低压检测标志位,同时也是低压检测中断请求标志位。
电源控制寄存器PCON中的其他位与低压检测中断无关.
- IE : 中断允许寄存器 (可位寻址)
-
- EA : CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。
EA的作用是使中断允许形成两级控制。即各中断源首先受EA控制;其次还受各中断源自
己的中断允许控制位控制。
- EA : CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。
-
- ELVD : 低压检测中断允许位,ELVD=1,允许低压检测中断,ELVD=0,禁止低压检测中断。
还有A/D转换控制寄存器和比较器控制寄存器以及PWM 的控制寄存器相关没有介绍。
- 可以参考另外一篇《STC15系列CCP/PWM/PCA介绍》
📚STC15相关章节拆分资料
复制这段内容后打开百度网盘手机App,操作更方便哦
链接: https://pan.baidu.com/s/1GSWoJiHuvSmYi9VnaNEp9g
提取码: ir93
相关文章:

STC15中断系统介绍
STC15中断系统介绍✨本篇参考来源于STC官方stc15系列手册:538页- 589页。(文末提供该摘取部分的文档资料) 🎉在官方提供的手册资料中,一个系列一份手册,手册内容涵盖了数据手册和参考手册以及例程案例。对于学习着来说…...

力扣HOT100 11-15
11.盛水最多的容器 思路:最大水量 底边 * 高度。较短的一边控制最大水量,因此,采用双指针的方式,左、右指针指向开始和末尾,逐个向中间移动,判断左右指针所指向的高度哪个更低,它就向中间移动一…...
深入浅出单调栈与单调队列
目录一、单调栈情形一:寻找一个数左边第一个小于它的数情形二:寻找一个数左边第一个小于它的数的下标情形三:寻找一个数右边第一个大于它的数情形四:寻找一个数右边第一个大于它的数的下标二、单调栈的应用2.1 单调栈模板题I2.2 单…...
深入C语言——实现可变参数函数
文章目录初步示例函数解析最大值函数初步示例 stdarg.h提供了C语言对可变参数的支持,先举一个简短的例子 //testStdArg.c #include <stdarg.h> #include <stdio.h>void printIntList(int N, ...){va_list args; //存放...所代表的参数va_start(…...
41-Dockerfile-Dockerfile简介
Dockerfile简介前言Dockerfile 简介基础知识使用Dockerfile 构建镜像步骤Dockerfile 构建过程Dockerfile基本结构Dockerfile示例总结前言 本篇开始来学习下Dockerfile相关的用法 Dockerfile 简介 Dockerfile : 是用来构建 Docker 镜像的文本文件,是有一条条构建镜…...

【408】操作系统 - 刻骨铭心自测题1(上)
文章目录OS练习题第一部分:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17&am…...

【老卫拆书】009期:Vue+Node肩挑全栈!《Node.js+Express+MongoDB+Vue.js全栈开发实战》开箱
今天刚拿到一本新书,叫做《Node.jsExpressMongoDBVue.js全栈开发实战》,做个开箱。 外观 先从外观上讲,这本是全新的未开封的,膜还在。 这本书介绍从技术原理到整合开发实战,以丰富的项目展现全栈开发的一个技巧。 …...

【LeetCode】动态规划总结
动态规划解决的问题 动态规划和贪心的区别: 动态规划是由前一个状态推导出来的; 贪心是局部直接选最优的。 动态规划解题步骤 状态定义:确定dp数组以及下标的含义状态转移方程:确定递推公式初始条件:dp如何初始化遍历…...

CAS详解.
CAS这个机制就给实现线程安全版本的代码,提供了一个新的思路,之前通过加锁,把多个指令打包成整体,来实现线程安全。现在就可以考虑直接基与CAS来实现一些修改操作,也能保证线程安全(不需要加锁)…...

Mock.js初步使用(浏览器端)
Mock.js:生成随机数据,拦截 Ajax 请求。官方地址:http://mockjs.com/第一个demodemo.html<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>mockjs demo</title> </head> <…...

opencv保存图片
大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…...

【c++】数据类型
文章目录整型实型科学计数法sizeof关键字字符型字符串类型转义字符bool布尔类型c规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。 整型 作用:整型变量表示的是整数类型的数据。 实型 float f3.14; //默…...
Elasticsearch的写的底层原理
前面有一篇文章讲解了Elasticsearch的读写搜索过程,有的人感觉不太理解,今天我们再来看看这些过程的原理 写数据底层原理 首先是将数据写入到内存buffer中,在这里的时候,数据是搜索不到。他同时会将数据写入到translog日志文件中…...

【网络编程】Java中的Socket
文章目录前言socket是什么?Java中的SocketJava实现网络上传文件前言 所谓Socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用…...

有趣的Hack-A-Sat黑掉卫星挑战赛——跟踪卫星
国家太空安全是国家安全在空间领域的表现。随着太空技术在政治、经济、军事、文化等各个领域的应用不断增加,太空已经成为国家赖以生存与发展的命脉之一,凝聚着巨大的国家利益,太空安全的重要性日益凸显[1]。而在信息化时代,太空安…...

Ubuntu安装配置Cuda和Pytorch gpu
前言 在Ubuntu中操作系统中,通过Anconda安装对应的虚拟环境以及软件包,一般都需要适配Cuda、Pytorch版本等 以下安装配置都是在Ubuntu操作系统下 1. 安装Cuda 通过Ubuntu操作系统查看cuda适配的版本:nvidia-smi 截图如下: 查看Ubuntu版本可如下方式 (1)cat /proc/ver…...

三、Java面向对象
1 . 方法 方法(method)是程序中最小的执行单元方法就是一些代码的打包 需要的时候可以直接调用方法之间是平级的关系 不能在方法里面定义方法方法不调用就不执行 方法的定义 // 方法的定义 /* [修饰符] 返回值类型 方法名称([参数 1],[参数 2]){语句A;return 返回值; } *///…...
pygame7 弹球游戏2
上节课我们做到当球静止下来后在第0号球上画一个球杆 本节课我们将会让这个球杆将球打出来 1、鼠标事件 pygame.mouse.get_pressed():返回鼠标左键,中间,右键的情况 2、键盘事件: pygame.key.get_pressed(): 返回所有键盘的情况 3、pyg…...

计算机网络4:计算机网络体系结构
目录计算机网络体系结构1.网络模型2.每一层的代表含义2.1 OSI7层模型2.2 五层协议2.3 TCP/IP 四层协议3.数据在各层之间的传输过程4.为什么要进行分层计算机网络体系结构 1.网络模型 2.每一层的代表含义 2.1 OSI7层模型 (1)物理层:比特流–…...

1630_GNU的二进制分析工具nm简单使用探索
全部学习汇总: GreyZhang/toolbox: 常用的工具使用查询,非教程,仅作为自我参考! (github.com) GNU有一套二进制的分析工具,之前是用过objdump的,但是也没有系统掌握。如果做底层软件的设计,这些…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...