STC15中断系统介绍

news2024/11/16 13:54:34

STC15中断系统介绍


  • ✨本篇参考来源于STC官方stc15系列手册:538页- 589页。(文末提供该摘取部分的文档资料)

🎉在官方提供的手册资料中,一个系列一份手册,手册内容涵盖了数据手册和参考手册以及例程案例。对于学习着来说,一份接近15K页的文档,即使有目录,也不好翻阅其相关的内容。所以有必要进行拆解学习。

🌼中断系统

  • 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。
  • 当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件 ,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统,请示CPU中断的请求源称为中断源。微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU总是先响应优先级别最高的中断请求。
  • 当CPU正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的 服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没有中断嵌套功能的中断系统称为单级中断系统。

🔰中断响应规则

  1. 低优先级中断可被高优先级中断所中断,反之不能。
  2. 任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断所中断.

🌻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产生中断
    • ET3:定时器3的中断允许位:
      ET3=1,允许定时器3产生中断;
      ET3=0,禁止定时器3产生中断
    • ES4 : 串行口4中断允许位:
      ES4=1,允许串行口4中断;
      ES4=0,禁止串行口4中断
    • ES3 : 串行口3中断允许位:
      ES3=1,允许串行口3中断;
      ES3=0,禁止串行口3中断。
      ET2:定时器2的中断允许位。
      ET2=1,允许定时器2产生中断;
      ET2=0,禁止定时器2产生中断
    • ESPI:SPI中断允许位。
      ESPI=1,允许SPI中断;
      ESPI=0,禁止SPI中断。
    • ES2 : 串行口2中断允许位。
      ES2=1,允许串行口2中断;
      ES2=0,禁止串行口2中断。
  • INT_CLKO (AUXR2) : 外部中断允许和时钟输出寄存器
    在这里插入图片描述
    • EX4 : 外部中断4(INT4)中断允许位,EX4=1允许中断,EX4=0禁止中断。外部中断4(INT4)只
      能下降沿触发。
    • EX3 : 外部中断3(INT3)中断允许位,EX3=1允许中断,EX3=0禁止中断。外部中断3(INT3)也
      只能下降沿触发。
    • 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)
    • PLVD: 低压检测中断优先级控制位。
      当PLVD=0时,低压检测中断为最低优先级中断(优先级0)
      当PLVD=1时,低压检测中断为最高优先级中断(优先级1)
    • PADC: A/D转换中断优先级控制位。
      当PADC=0时,A/D转换中断为最低优先级中断(优先级0)
      当PADC=1时,A/D转换中断为最高优先级中断(优先级1)
    • PS: 串口1中断优先级控制位。
      当PS=0时,串口1中断为最低优先级中断(优先级0)
      当PS=1时,串口1中断为最高优先级中断(优先级1)
    • PT1: 定时器1中断优先级控制位。
      当PT1=0时,定时器1中断为最低优先级中断(优先级0)
      当PT1=1时,定时器1中断为最高优先级中断(优先级1)
    • PX1: 外部中断1优先级控制位。
      当PX1=0时,外部中断1为最低优先级中断(优先级0)
      当PX1=1时,外部中断1为最高优先级中断(优先级1)
    • PT0: 定时器0中断优先级控制位。
      当PT0=0时,定时器0中断为最低优先级中断(优先级0)
      当PT0=1时,定时器0中断为最高优先级中断(优先级1)
    • PX0: 外部中断0优先级控制位。
      当PX0=0时,外部中断0为最低优先级中断(优先级0)
      当PX0=1时,外部中断0为最高优先级中断(优先级1)
  • IP2 : 中断优先级控制寄存器 (不可位寻址)
    在这里插入图片描述

    • PX4: 外部中断4(INT4)优先级控制位。
      当PX4=0时,外部中断4(INT4)为最低优先级中断(优先级0)
      当PX4=1时,外部中断4(INT4)为最高优先级中断(优先级1)
    • PPWMFD: PWM异常检测中断优先级控制位。
      当PPWMFD=0时,PWM异常检测中断为最低优先级中断(优先级0)
      当PPWMFD=1时,PWM异常检测中断为最高优先级中断(优先级1)
    • PPWM: PWM中断优先级控制位。
      当PPWM=0时,PWM中断为最低优先级中断(优先级0)
      当PPWM=1时,PWM中断为最高优先级中断(优先级1)
    • PSPI: SPI中断优先级控制位。
      当PSPI=0时,SPI中断为最低优先级中断(优先级0)
      当PSPI=1时,SPI中断为最高优先级中断(优先级1)
    • PS2: 串口2中断优先级控制位。
      当PS2=0时,串口2中断为最低优先级中断(优先级0)
      当PS2=1时,串口2中断为最高优先级中断(优先级1)

中断优先级控制寄存器IP和IP2的各位都由可用户程序置“1”和清“0”。但IP寄存器可位操作,所以可用位操作指令或字节操作指令更新IP的内容。而IP2寄存器的内容只能用字节操作指令来更新。STC15系列单片机复位后IP和IP2均为00H,各个中断源均为低优先级中断。

  • TCON : 定时器/计数器中断控制寄存器 (可位寻址)
    在这里插入图片描述
    • TF1: T1溢出中断标志。T1被允许计数以后,从初值开始加1计数。当产生溢出时由硬件置
      “1”TF1,向CPU请求中断,一直保持到CPU响应中断时,才由硬件清“0”(也可由查询软件清“0”)。
    • TR1: 定时器1的运行控制位。
    • TF0:T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置
      “1”TF0,向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由查询软件清0)。
      TR0: 定时器0的运行控制位。
    • IE1:外部中断1(INT1/P3.3)中断请求标志。IE1=1,外部中断向CPU请求中断,当CPU响应
      该中断时由硬件清“0”IE1。
    • IT1:外部中断1中断源类型选择位。IT1=0,INT1/P3.3引脚上的上升沿或下降沿信号均可触发
      外部中断1。IT1=1,外部中断1为下降沿触发方式。
    • IE0:外部中断0(INT0/P3.2)中断请求标志。IE0=1,外部中断0向CPU请求中断,当CPU响
      应外部中断时,由硬件清“0”IE0。
    • IT0:外部中断0中断源类型选择位。IT0=0,INT0/P3.2引脚上的上升沿或下降沿均可触发外部
      中断0。IT0=1,外部中断0为下降沿触发方式。
  • 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必须由用户的中断服务程序清零。
    • 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必须由用户的中断服务程序清零。
    • 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必须由用户的中断服务程序清零。
    • 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必须由用户的中断服务程序清零。
    • S4TI:串行口4发送中断标志。串行口4以方式0发送时,每当发送完8位数据,由硬件置1;若
      以方式1、方式2或方式3发送时,在发送停止位的开始时置1。S4TI=1表示串行口4正在向CPU申请中断(发送中断)。值得注意的是,CPU响应发送中断请求,转向执行中断服务程序时并不将S4TI清零,S4TI必须由用户在中断服务程序中清零。

S4CON寄存器的其他位与中断无关。

  • PCON : 电源控制寄存器
    在这里插入图片描述
    • LVDF : 低压检测标志位,同时也是低压检测中断请求标志位。
      在正常工作和空闲工作状态时,如果内部工作电压Vcc低于低压检测门槛电压,该位自动置1,与低压检测中断是否被允许无关。即在内部工作电压Vcc低于低压检测门槛电压时,不管有没有允许低压检测中断,该位都自动为1。该位要用软件清0,清0后,如 内部工作电压Vcc继续低于低压检测门槛电压,该位又被自动设置为1。
      在进入掉电工作状态前,如果低压检测电路未被允许可产生中断,则在进入掉电模式后,该低压检测电路不工作以降低功耗。如果被允许可产生低压检测中断,则在进入掉电模式后,该低压检测电路继续工作,在内部工作电压Vcc低于低压检测门槛电压后,产生低压检测中断,可将MCU从掉电状态唤醒。

电源控制寄存器PCON中的其他位与低压检测中断无关.

  • IE : 中断允许寄存器 (可位寻址)
    在这里插入图片描述
    • EA : CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。
      EA的作用是使中断允许形成两级控制。即各中断源首先受EA控制;其次还受各中断源自
      己的中断允许控制位控制。
    • ELVD : 低压检测中断允许位,ELVD=1,允许低压检测中断,ELVD=0,禁止低压检测中断。

还有A/D转换控制寄存器和比较器控制寄存器以及PWM 的控制寄存器相关没有介绍。

  • 可以参考另外一篇《STC15系列CCP/PWM/PCA介绍》

📚STC15相关章节拆分资料

复制这段内容后打开百度网盘手机App,操作更方便哦
链接: https://pan.baidu.com/s/1GSWoJiHuvSmYi9VnaNEp9g
提取码: ir93

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/339858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

彻底搞懂分布式系统服务注册与发现原理

目录 引入服务注册与发现组件的原因 单体架构 应用与数据分离

火遍全球的ChatGPT技术简介与主干网络代码

如果说当下最火的AI技术和话题是什么,恐怕很难绕开ChatGPT。各大厂商都在表示未来要跟进ChatGPT技术,开发在自然语言处理智能系统,可见其影响力。本篇博客追个热度,来简单的介绍下ChatGPT到底是一项什么技术,究竟如何完…

深入理解innodb存储格式,双写机制,buffer pool底层结构和淘汰策略

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…

【网络编程】Java中的Socket

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

kafka入门篇

文章目录前言介绍概念与说明安装启动配置命令操作创建topic查看topic列表发送消息(启动一个生产者)消费消息(启动一个消费者)查询topic信息删除topic集群关机使用报错java连接示例前言 作为入门篇,主要是了解Kafka的概…

在windows下载安装netcat(nc)命令

参考文章 一、netcat(nc)下载 网盘下载 netcat(nc)下载地址:netcat 1.11 for Win32/Win64 二、配置环境变量 在Path里添加netcat的存放路径 参数 说明 -C 类似-L选项,一直不断连接[1.13版本新加的功能] -d 后台执行 -e prog 程序重定向&am…

能取代90%人工作的ChatGPT到底牛在哪?

📣📣📣📣📣📣📣 🎍大家好,我是慕枫 🎍前阿里巴巴高级工程师,InfoQ签约作者、阿里云专家博主,一直致力于用大白话讲解技术知识 &#x…

Web 框架 Flask 快速入门(二)表单

课程地址:Python Web 框架 Flask 快速入门 文章目录🌴 表单1、表单介绍2、表单的简单实现1. 代码2. 代码的执行逻辑3、使用wtf扩展实现4、bug记录:表单验证总是失败🌴 表单 1、表单介绍 当我们在网页上填写账号密码进行登录的时…

Spring 面试题(一):Spring 如何处理全局异常?

❤️ 博客首页:水滴技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 🌸 订阅专栏:Spring 教程:从入门到精通 文章目录1、如何处理全局异常2、代码示例2.1、定义统一的“响应结果对象”2.2、…

Leetcode 回溯详解

回溯法 回溯法有“通用解题法”之称,用它可以系统地搜索问题的所有解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。 在包含问题的所有解的解空间树中,按照深度优先搜索(DFS))的策略,从根结点出发深度探索解空间树。当探索…

MWORKS--同元软控MWORKS介绍、安装与使用

MWORKS--同元软控MWORKS介绍、安装与使用1 同元软控介绍1.1 同元软控简介1.2 同元软控发展历史2 MWORKS介绍2.1 MWORKS简介2.2 MWORKS产品描述3 装备数字化3.1 发展3.2 内涵3.3 系统模型发展成为产品的一部分3.4 MWORKS系统模型数据管理3.4 MWORKS为装备数字化提供的套件参考1 …

springcloud集成seata(AT)分布式事务

目录 一、 下载seata server和seata源码 二、配置启动seata 2.1 在nacos控制台,新建一个seata的名称空间,用于存放seata的专用配置 2.2 创建seata server的mysql库 2.3 在nacos上配置seata相关配置 (seata名称空间) 2.4 启动…

家政服务小程序实战教程08-宫格导航

小程序一般会在首页显示商品的分类,这类需求我们在微搭中是使用宫格导航组件来实现。 01 组件说明 宫格导航组件可以在导航配置里设置菜单,可以手动添加,也可以变量绑定 因为我们一般的分类是动态变化的,品类会不断的调整&#…

阿里代码规范插件中,Apache Beanutils为什么被禁止使用?

在实际的项目开发中,对象间赋值普遍存在,随着双十一、秒杀等电商过程愈加复杂,数据量也在不断攀升,效率问题,浮出水面。 问:如果是你来写对象间赋值的代码,你会怎么做? 答&#xf…

[Java 进阶面试题] CAS 和 Synchronized 优化过程

最有用的东西,是你手里的钱,有钱就有底气,还不快去挣钱~ 文章目录CAS 和 Synchronized 优化过程1. CAS1.1 CAS的原理1.2 CAS实现自增自减的原子性1.3 CAS实现自旋锁1.4 CAS针对ABA问题的优化2. synchronized2.1 synchronized加锁阶段分析2.2 synchronized优化CAS 和 Synchroniz…

nodejs+vue大学生在线选课系统vscode - Visual Studio Code

3、数据库进行设计,建立约束和联系。 4、创建程序框架,代码分成三层结构:接口层、业务层、表示层,设计窗口和主窗口,主窗口菜单项依照系统模块图设计。 5、设计数据访问的接口,供各模块调用。完成登录功能…

【JavaWeb项目】简单搭建一个前端的博客系统

博客系统项目 本项目主要分成四个页面: 博客列表页博客详情页登录页面博客编辑页 该系统公共的CSS样式 common.css /* 放置一些各个页面都会用到的公共样式 */* {margin: 0;padding: 0;box-sizing: 0; }/* 给整个页面加上背景 */ html, body{height: 100%; }body {backgrou…

printf的返回值

参考资料 点击下面的链接https://legacy.cplusplus.com/reference/cstdio/printf/?kwprintf, 返回值的理解 如果返回成功后,将返回写入的字符总数。 如果发生写入错误,则设置错误指示器(ferror)并返回负数。 如果在写入宽字符…

微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第一步登录微信

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 为什么会有这个话题?大家都知道最近有个AI机器人很火,那就是chatgpt,关于它的介绍,大家可以自行百度去,我这边就不多介绍了。 好多人嫌网页版玩的不过瘾,就把这个机器人接入到了QQ上,接入到了钉钉上,TG 上…

设计模式:原型模式解决对象创建成本大问题

一、问题场景 现在有一只猫tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和tom猫属性完全相同的10只猫。 二、传统解决方案 public class Cat {private String name;private int age;private String color;…