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的,但是也没有系统掌握。如果做底层软件的设计,这些…...
【Redis】Redis高可用之Redis Cluster集群模式详解(Redis专栏启动)
📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公…...
1.8 正则表达式
正则表示式是用来匹配与查找字符串的,从网上爬取数据不可避免的会用到正则表达式。 Python 的表达式要先引入 re 模块,正则表达式以 r 引导。Re库主要功能函数函数说明re.search()在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象…...
Postgresql 根据单列或几列分组去重row_number() over() partition by
Postgresql 根据单列或几列分组去重row_number() over() partition by 一般用于单列或者几列需要去重后进行计算值的 count(distinct(eid)) 可以 比如有个例子,需要根据名称,城市去筛选覆盖的道路长度,以月因为建立了唯一索引是ok的&#…...
基于蒙特卡洛法的规模化电动车有序充放电及负荷预测(PythonMatlab实现)
💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🎉作者研究:🏅🏅🏅主要研究方向是电力系统和智能算法、机器学…...
Selenium常用API详解,从入门到进阶(全套)
目录 1、打开页面 2、查找页面元素 3、输入文本 4、点击操作 5、提交操作 6、清除文本 7、获取文本、属性 8、获取页面的标题和URL 9、窗口 9.1、设置窗口大小 9.2、窗口切换 9.2.1、为什么需要窗口切换? 9.2.2、获取句柄的方式 9.2.3、切换句柄 10、…...
自从学会了Python,我实现了壁纸自由(6)
小朋友们好,大朋友们好!我是猫妹!哈哈哈,又到周末啦!这周过得怎么样?马上就要开学了,寒假作业早已写好了吧?开学让人兴奋,上了很久网课都要吐啦!开学也让人有…...
Ruby 发送邮件 - SMTP
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 Ruby提供了 Net::SMTP 来发送邮件,并提供了两个方法 new 和 start: new 方法有两个参数&am…...
Python爱心代码
前言 Python漂浮爱心,具体源码见:Python动态爱心代码_爱心代码-Python文档类资源-CSDN下载 爱心类 class Heart(): #每个爱心(爱心类) def __init__(self): self.r ra.randint(10,15) #爱心的半径 …...
【二分查找法及其应用】
文章目录一. 前提二. 基本思路三. 代码实现四. 封装在STL中的二分查找算法五. 浮点数二分一. 前提 待查找的序列是有序的;待查找的 a 采取顺序存储结构。 二. 基本思路 设在升序序列 a [ low…high ] 查找的 k , 首先找中间值 mid a [ ( lowhigh )/2 …...
Android 进阶——Framework核心 之Binder Java成员类详解(三)
文章大纲引言一、Binder Java家族核心成员关系图二、Binder Java家族核心成员源码概述1、android.os.IBinder1.1、boolean transact(int code, Parcel data, Parcel reply, int flags) send a call to an IBinder object1.2、String getInterfaceDescriptor()1.3、boolean ping…...
织梦网站如何打通百度小程序/百度竞价托管代运营公司
学校计算机网络教室、多媒体教室布线及设备安装施工实施方案**县中小学计算机网络教室 **县中小学多媒体教室 布线及设备安装施工实施方案 目 录 1 前言 ..................................................................................................................…...
政府网站建设工作总结6/口碑营销是什么
1.首先,还是调库,保证pycharm中已经导入了cv2这个库,然后收可以开始写代码了。 import cv2 as cv2.导入cv2库。 imgcv.imread(./image/Lenna.png)3.读取Lenna图像。 if img isNone:print(read error)exit()4.当图像读取错误为空时࿰…...
wordpress和hexo哪个好/近期发生的新闻
全球地址解析API,目前我已经购买了一套阿里云香港服务器,这样即便是国外客户,也能正常访问。由于个人经济能力有限没有足够的服务器资源,所以在调用的时候做了少许限制。 调用分为两种,一种是不需要Key值,…...
上海闸北城市建设有限公司网站/网站seo策划方案案例分析
打开文件的三种方式:open(rE:\学习日记\python\code\文件的简单操作.py)open(E:\\学习日记\\python\\code\\文件的简单操作.py)open(E:/学习日记/python/code/文件的简单操作.py)#字符串前面加一个r代表原生的raw# rt,wt,at:r读,w、a写&#…...
石家庄公司建设网站/2023年6月疫情情况
空目录索引请在所有不包含普通程序(即能够被URL直接调用的程序)的目录中放置一个1字节的index.htm文件,内容为一个空格。几乎除phpcms根目录以外,所有目录都属于这一类型,因此开发者需要在这些目录全部放入空index.htm文件,以避免…...
网站建设新闻稿/坚持
不健康的腹部脂肪可能是由于几个原因造成的,这些原因可能是缺乏锻炼,不健康的饮食,过量食用精制碳水化合物和糖甚至遗传。有哪些简单的方法可以快速减少腹部脂肪?1、多吃蛋白质作为一种奇妙的营养素,蛋白质对于减少腹部…...