最近一周一直在基于STM32F429项目的IAP工程,耗时4天才完成,得空记录下来。

文章主要涵盖了以下几点:
1. IAP是什么?
2. bin文件和hex文件的差别
3. ymodem协议介绍及其缺陷
4. RS485通讯
5. IAP的main()函数代码片段

  项目的框架如下:

                   ymodem协议PC机_超级终端 -----------------> STM32产品的串口RS485通讯线

  从ST官网下载的IAP的SDK,其中包含了经典的ymodem协议和基于STM32F429的HAL库,工程就是基于该SDK开发的。

1. IAP的概念

  IAP的具体概念解析网上搜索一大堆,在这里简单描述。IAP(In Application Programming)即在应用编程,常听说的还有ISP(In System Programming)即在系统编程。ISP指的是将通过JTAG等接口将单片机程序烧录进单片机的FLASH(当然也可以是其他存储介质,如SRAM),而IAP指的是采用引导程序(Boot) + 应用程序(App)的方式烧写单片机程序,App是真正实现业务逻辑功能的代码。

  一般产品的调试口,也就是JTAG口是被置于机壳里面的,烧写需要打开机壳,也需要专业工具和电脑桌面软件。IAP的Boot程序通过ISP的方式烧录到单片机的低地址的FLASH处,每次单片机复位后会先执行Boot程序,在Boot程序中进行判断,用户是否要升级,若是则从串口(或者网口/CAN通信口)读取App程序写到高地址的FLASH,读写完毕后再跳转到FLASH上App的起始地址,执行业务逻辑功能代码,若否则直接跳转到App的代码处理:

                             |-- 要升级 --> 读取读取串口发来的APP程序,写入FLASAH目标地址 --||                                                              |Boot: 判断是否要升级App -|                                                             ||-- 不升级 ---------------------------------------------------------> 跳转到APP程序起始地址处理

  Boot和App都是单片机程序,只是实现的功能不同,前者是为了引导App,后者是为了实现业务逻辑功能。这里有一个关键的动作,就是跳转,即从Boot跳转到App起始地址处。
需要清晰2个概念:
(1) 程序的起始地址
程序的起始地址默认是被放在FLASH的起始地址处,即0x08000000:
这里写图片描述
Boot是放在这个默认起始地址的,App则要往后移动,这里设置为0x08008000:
这里写图片描述
需要注意,这是在App没有采用分散加载时设置的程序存放起始地址,若采用了分散加载,则需要修改工程中的.sct文件。详细内容可参照杜春雷的《ARM体系结构及编程》。

  (2) 中断向量表的地址
对于STM32来说,每个单片机程序都有一张中断向量表,也就是说,在存有Boot和App的FLASH上就有两张中断向量表,Boot根据Boot程序中的中断向量表发生中断跳转,同理,App就要根据App程序的中断向量表发生中断跳转。中断向量表的摆放位置正是程序的开始地址。所以需要将App的中断向量表的摆放位置放在0x08004000。在system_stm32f4xx.c中:

#ifdef VECT_TAB_SRAMSCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#elseSCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
#endif

  程序运行时候发生中断/异常/系统调度时就会去读取SCB->VTOR以获取中断向量表的地址;FLASH_BASE即STM32F429的(内置)FLASH的起始地址:

#define FLASH_BASE  ((uint32_t)0x08000000)

  VECT_TAB_OFFSET是偏移量,所以我们可以通过设置此值指定中断向量表的存放地址。

  讲到这里,顺便介绍STM32的中断向量表。表的形态如下:(摘自startup_stm32f429xx.s)

__Vectors       DCD     __initial_sp               ; Top of StackDCD     Reset_Handler              ; Reset HandlerDCD     NMI_Handler                ; NMI Handler; ...; External InterruptsDCD     WWDG_IRQHandler                   ; Window WatchDog                                        DCD     PVD_IRQHandler                    ; PVD through EXTI Line detection                        ; ...DCD     LTDC_ER_IRQHandler                ; LTDC errorDCD     DMA2D_IRQHandler                  ; DMA2D__Vectors_End
__Vectors_Size  EQU  __Vectors_End - __Vectors

  显然,Boot程序结束后程序运行指针跳转到App的__initial_sp处,__initial_sp处存放的是App的栈的起始地址。中断向量表的作用是当程序发生异常/中断的时候会根据表中的标号而跳转到具体对应的中断处理函数(ISR)。

2. ymodem协议介绍

  关于ymodem协议的接收网上资料甚多,不做过多的介绍了。简单分析ymodem的数据包格式:

/* /-------- Packet in IAP memory ------------------------------------------\* | 0      |  1    |  2     |  3   |  4      | ... | n+4     | n+5  | n+6  | * |------------------------------------------------------------------------|* | unused | start | number | !num | data[0] | ... | data[n] | crc0 | crc1 |* \------------------------------------------------------------------------/* the first byte is left unused for memory alignment reasons                 */

  (1) unused:无意义,用于字节对齐
(2) start:起始信号,”SOH”表本数据包的数据区有128字节,”STX”则表示有1024字节
(3) number:数据包的编号,编号为0x00-0xFF。到数据包编号到达255后,将会从0开始计数。
(4) !num:数据包编号的反码
(5) data[0]…data[n]:数据区。对于第一个数据包(编号为0),存放的是文件名
(6) CRC0、CRC1:校验码(只有数据区参与校验)
下面是通讯流程:
(1) 接收方发送一个字符’C’,也就是十六进制0x43。代表接收方已经处于接收数据的状态
(2) 发送方接收到’C’之后,发送头帧数据包,数据包格式如上所述,此时数据区的数据是文件名和文件大小
(3) 接收方收到数据包后发送ACK应答正确,然后发送一个字符’C’,发送方收到’C’后开始发送第二帧数据,第二帧数据即使第一个数据包
(4) 接收方收好数据包后,发送ACK正确应答,然后等待下一包数据传送完毕,继续ACK应答,如此循环
(5) 数据传输完毕后,发送方第一次发EOT,第一次接收方以NAK应答,进行二次确认
(6) 发送方收到NAK后,第二次发EOT。接收方第二次收到结束符,依次以ACK和C做应答
(7) 发送方收到ACK和C之后,发送结束符
(8) 接收方收到结束符之后,以ACK做应答,然后通信正式结束

  ymodem协议除了接收数据包外还会将数据包按照指定地址写入FLASH。本SDK使用的是HAL库。
这部分的实现在ymodem.c的Ymodem_Receive()函数中:

#define PACKET_HEADER_SIZE      ((uint32_t)3)
#define PACKET_DATA_INDEX       ((uint32_t)4)
#define PACKET_START_INDEX      ((uint32_t)1)
#define PACKET_NUMBER_INDEX     ((uint32_t)2)
#define PACKET_CNUMBER_INDEX    ((uint32_t)3)
#define PACKET_TRAILER_SIZE     ((uint32_t)2)
#define PACKET_OVERHEAD_SIZE    (PACKET_HEADER_SIZE + PACKET_TRAILER_SIZE - 1)
#define PACKET_SIZE             ((uint32_t)128)
#define PACKET_1K_SIZE          ((uint32_t)1024)uint32_t flashdestination;
uint8_t aPacketData[PACKET_1K_SIZE + PACKET_DATA_INDEX + PACKET_TRAILER_SIZE];static HAL_StatusTypeDef ReceivePacket(uint8_t *p_data, uint32_t *p_length, uint32_t timeout)
{uint32_t crc;uint32_t packet_size = 0;HAL_StatusTypeDef status;uint8_t char1;*p_length = 0;//调用HAL库函数接收字符,UartHandle是数据包的句柄status = HAL_UART_Receive(&UartHandle, &char1, 1, timeout);if (status == HAL_OK){switch (char1){case SOH:packet_size = PACKET_SIZE;      //PACKET_SIZE为128break;case STX:packet_size = PACKET_1K_SIZE;   //PACKET_1K_SIZE为1024break;case EOT:                         //数据传输完毕break;case CA:if ((HAL_UART_Receive(&UartHandle, &char1, 1, timeout) == HAL_OK) && (char1 == CA)){packet_size = 2;}else{status = HAL_ERROR;}break;case ABORT1:case ABORT2:status = HAL_BUSY;break;default:status = HAL_ERROR;break;}*p_data = char1;if (packet_size >= PACKET_SIZE ){//接收真正的数据包status = HAL_UART_Receive(&UartHandle, &p_data[PACKET_NUMBER_INDEX], packet_size + PACKET_OVERHEAD_SIZE, timeout);//检验数据包if (status == HAL_OK ){if (p_data[PACKET_NUMBER_INDEX] != ((p_data[PACKET_CNUMBER_INDEX]) ^ NEGATIVE_BYTE)){packet_size = 0;status = HAL_ERROR;}else{/* Check packet CRC */crc = p_data[ packet_size + PACKET_DATA_INDEX ] << 8;crc += p_data[ packet_size + PACKET_DATA_INDEX + 1 ];if (Cal_CRC16(&p_data[PACKET_DATA_INDEX], packet_size) != crc ){packet_size = 0;status = HAL_ERROR;}}}else{packet_size = 0;}}}*p_length = packet_size;return status;
}COM_StatusTypeDef Ymodem_Receive ( uint32_t *p_size )  //p_size为输出型参数,用于存放从PC端发来的文件的大小
{uint32_t i, packet_length, session_done = 0, file_done, errors = 0, session_begin = 0;uint32_t ramsource, filesize;uint8_t *file_ptr;uint8_t file_size[FILE_SIZE_LENGTH], tmp, packets_received;COM_StatusTypeDef result = COM_OK;/* APPLICATION_ADDRESS是App的起始地址 */flashdestination = APPLICATION_ADDRESS;while ((session_done == 0) && (result == COM_OK)){packets_received = 0;       //记录接收到的数据包的个数file_done = 0;while ((file_done == 0) && (result == COM_OK)){switch (ReceivePacket(aPacketData, &packet_length, DOWNLOAD_TIMEOUT)){case HAL_OK:errors = 0;switch (packet_length){case 2:/* 发送方终止发送 */Serial_PutByte(ACK);result = COM_ABORT;break;case 0:/* 正常结束传输 */Serial_PutByte(ACK);file_done = 1;break;default:/* 数据包编号出错 */if (aPacketData[PACKET_NUMBER_INDEX] != packets_received){Serial_PutByte(NAK);}else{if (packets_received == 0){/* 数据包编号为0,证明这是数据区存放文件名的帧数据,事实上这个判断是有误的 */if (aPacketData[PACKET_DATA_INDEX] != 0){//读取文件名i = 0;file_ptr = aPacketData + PACKET_DATA_INDEX;while ( (*file_ptr != 0) && (i < FILE_NAME_LENGTH)){aFileName[i++] = *file_ptr++;}aFileName[i++] = '\0';//读取文件大小i = 0;file_ptr ++;while ( (*file_ptr != ' ') && (i < FILE_SIZE_LENGTH)){file_size[i++] = *file_ptr++;}file_size[i++] = '\0';Str2Int(file_size, &filesize);if (*p_size > (USER_FLASH_SIZE + 1))  //文件大过于可供存储的FLASH的空间{tmp = CA;HAL_UART_Transmit(&UartHandle, &tmp, 1, NAK_TIMEOUT);HAL_UART_Transmit(&UartHandle, &tmp, 1, NAK_TIMEOUT);result = COM_LIMIT;}/* 擦除扇区 */FLASH_If_Erase(APPLICATION_ADDRESS);*p_size = filesize;Serial_PutByte(ACK);Serial_PutByte(CRC16);}/* 文件头为空,传输结束 */else{Serial_PutByte(ACK);file_done = 1;session_done = 1;break;}}else /* 真正的数据包 */{//将收到的数据存放到FLASHramsource = (uint32_t) & aPacketData[PACKET_DATA_INDEX];if (FLASH_If_Write(flashdestination, (uint32_t*) ramsource, packet_length/4) == FLASHIF_OK){flashdestination += packet_length;Serial_PutByte(ACK);}else  //写入失败{/* End session */Serial_PutByte(CA);Serial_PutByte(CA);result = COM_DATA;}}packets_received ++;session_begin = 1;}break;}break;case HAL_BUSY:Serial_PutByte(CA);Serial_PutByte(CA);result = COM_ABORT;break;default:if (session_begin > 0){errors ++;  }if (errors > MAX_ERRORS) errors大于MAX_ERRORS,PC端将收到"接收端未响应的提示",终止传输{/* Abort communication */Serial_PutByte(CA);Serial_PutByte(CA);}else{Serial_PutByte(CRC16);  //返回'C'字符,PC端提示接收端未响应并记录次数,超过次数PC端也将提出}break;}}}return result;
}

  事实上,对数据包的接收处理操作是有问题的:packets_received用于记录数据包的个数,它是uint8_t类型,取值是0-255这确实是符合ymodem协议的,但是超过255的数据包呢,观察上面代码可以发现并没有对第超过255个数据包,也就是第256个数据包的处理。第256个数据包的编号也是为0,会进入:

if (packets_received == 0)
{if (aPacketData[PACKET_DATA_INDEX] != 0){//进行读取文件名、文件大小、擦除FLASH操作}
}

  但是编号为0的第256个数据包的数据区事实上是数据,收到该数据包还是要以真正的数据包的写FLASH等操作。

  一开始我利用IAP传输小于256K的APP的时候是正常运行的,后来传输400+k的APP就会出现问题:无法跳转至APP。经过多番调试才定位于此,所以简单修改上面的代码,代码片段为:

volatile int8_t is_first_pack = 1;
switch (RPreturn)
{case HAL_OK:errors = 0;after_isp = 1;switch (packet_length){case 2:Serial_PutByte(ACK);result = COM_ABORT;break;case 0:Serial_PutByte(ACK);        file_done = 1;break;default:if (aPacketData[PACKET_NUMBER_INDEX] != packets_received)   //ÅжÏÊý¾Ý°üµÄ±àºÅÊÇ·ñÕýÈ·{Serial_PutByte(NAK);}else{if (packets_received == 0 ){                           if (aPacketData[PACKET_DATA_INDEX] != 0 ){if (is_first_pack)  //第一个编号为0的数据包{//...               is_first_pack = 0;              }else    //即使数据编号为0但不是第一个数据包,采取存储操作          {ramsource = (uint32_t) & aPacketData[PACKET_DATA_INDEX];        if (FLASH_If_Write(flashdestination, (uint32_t*) ramsource, packet_length/4) == FLASHIF_OK){flashdestination += packet_length;Serial_PutByte(ACK);}else{Serial_PutByte(CA);Serial_PutByte(CA);result = COM_DATA;}                }}else {Serial_PutByte(ACK);file_done = 1;session_done = 1;break;}}else{ramsource = (uint32_t) & aPacketData[PACKET_DATA_INDEX];                        if (FLASH_If_Write(flashdestination, (uint32_t*) ramsource, packet_length/4) == FLASHIF_OK){flashdestination += packet_length;Serial_PutByte(ACK);}else{Serial_PutByte(CA);Serial_PutByte(CA);result = COM_DATA;}        }packets_received ++;packets_received = packets_received % 256;session_begin = 1;}break;}break;//..break;
}

3. Bin和Hex文件的差别

  第一次接触Hex文件一般是在学习51内核单片机的时候,通过烧录器烧录到开发板上使用的就是Hex格式的文件。Hex文件是以ASCII文本形式保存编译后的二进制文件信息,注意这里强调的是文本文件(而非数据文件,即二进制文件)。文本文件是人们可以看得懂的文件,但是计算机/MCU只认识二进制数据文件(Bin文件),Bin文件才是MCU固件烧写的最终形式,也就是说MCU的ROM中烧写的内容完全是Bin文件。由此可得,我们通过烧录器烧录Hex文件到单片机的ROM时,烧录器其实会将Hex文件的数据转为Bin文件的数据,最后才烧录到ROM。

  其实明白这一点我们就知道在IAP工程中,APP文件需要是Bin格式的文件而不能是Hex文件。既然Bin文件是MCU/计算机最终想要的,为什么我们不直接生成Bin文件,而却要生成Hex文件?其实Hex文件保存的不仅是Bin文件的内容,还有一些附属配置信息,随便拿个项目Hex文件分析:

: 10 9AB0 00 6841298459D0420F9AC4641EFBC10408 2E
: 10 9AC0 00 E7604BC5CC64011029B85A6980413C55 08
: 08 9AD0 00 55557C2964291C81 15
: 04 0000 05 080081AD C1
: 00 0000 01 FF

  Hex文件中的数据是ASCII编码,所以是人们能看懂的。上面3行内容,每行都是以’:’开始的,之后是数据长度、地址域、数据类型、数据域、校验和。

/* /-------- Hex Data format -------------------------------------------------------------\* |   0     |  1     |  34  |    5     |    6   |    7   |  ...   |   n     |   n + 1  |* |--------------------------------------------------------------------------------------|* | : 开始 | 数据长度 |地址域 | 记录类型 | 数据域 | 数据域 | 数据域 | 数据域n |  校验和  |* \--------------------------------------------------------------------------------------/* 每行数据都是以冒号开始的                 */

  注:记录类型的意义
(1) 00: 数据记录
(2) 01: 文件结束记录
(3) 02: 扩展段地址记录
(4) 03: 段开始地址记录
(5) 04: 扩展线性地址记录
(6) 05: 线性地址开始记录

  由此可见,生成Hex文件的意义在于:
(1) Hex文件使用ASCII文本保存固件信息,方便查看固件内容
(2) 文件内容每行的校验和与最后一行的文件结束标志,在文件的传输与保存过程中能够检验固件是否完整

  因此hex文件更适用于保存与传输。相比之下,Bin文件纯二进制文件,内部只包含程序编译后的机器码和变量数据。当文件损坏时,我们也无法知道文件已损坏。不过在IAP中,Bin文件仍旧是不可替代的。

4. RS485通讯

  从ST官网下载的的IAP SDK是基于RS232通讯的,即ymodem默认是从串口接收在APP数据的。但是我这个实际项目中用到的是采用RS485的通讯。RS232转为RS485,在软件上只是多了一步方向控制操作。因为RS485是半双工通讯,所以在发送单片机需要发送数据时需要将RS485总线设置为发送状态,接收数据则需要设置为接受状态。关于收发控制,软件上实现只是拉高/拉低对应控制RS485控制芯片的接收状态的GPIO即可。我的做法是默认是接收状态,当要发送时在发送函数内切换为发送状态,函数退出之前又切回接收状态。具体关于RS485通讯的详细,可阅读http://blog.csdn.net/qq_29344757/article/details/71516037一文中。

5. IAP的main代码片段分析

  IAP升级代码工程,一般需要基于一个能跑起来的通讯(这里是指RS485)和LED灯(用于指示状态,当然也可以用LCD等其他提示状态)运行正常的工程代码。下面是main()函数:

void SerialDownload(void);//定义函数指针,用于跳转到APP
typedef  void (*pFunction)(void);   
extern pFunction JumpToApplication;
extern uint32_t JumpAddress;
UART_HandleTypeDef UartHandle;int main(void)
{HAL_Init();SystemClock_Config();LED_BSP_Init();FLASH_If_Init();//初始化RS485UART_Init();RS485_RX_ENABLE();      //默认设置为接收状态HAL_Delay(10);IAP:    Serial_PutString((uint8_t *)"\r\n====================================================================");Serial_PutString((uint8_t *)"\r\n=                       IAP For STM32F429xx                        =");Serial_PutString((uint8_t *)"\r\n====================================================================\r\n");SerialDownload();   HAL_Delay(10);//APPLICATION_ADDRESS是在FLASH中存放APP的起始地址//此判断是为了保证APP的栈地址是在SRAM中。其实结果并不一定是0x20000000。有些APP可能定义的全局变量较多,那么栈的起始地址会偏移if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)   {Serial_PutString((uint8_t *)"\r\n=======================  Run application  ======================= \r\n\n");HAL_Delay(10);/* Jump to user application */JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);JumpToApplication = (pFunction) JumpAddress;/* Initialize user application's Stack Pointer */__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);JumpToApplication();}Serial_PutString((uint8_t *)"\r\n ======================= Download error, once again ======================= \r\n\n");
goto IAP;
}

  IAP的实现还是十分简单,但是中间走了N多弯路,特别是在调试ymodem接收大于256kb的APP上。关键要注意上述几点内容。当然,上述内容属于个人见解。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. tomcat里配置多数据源(数据库连接池) jndi 和项目连接 ssh框架

    以mysql和oracle数据库为例; 我项目以mysql为主。但需要去一个oracle数据库里查询数据,所以只有mysql里表的实体类,但没有oracle数据库实体类,所以配置mysql的数据源有实体类直接把数据源放到session工厂里用hibernate和数据库交互(session工厂是hibernate特有的,但hiber…...

    2024/4/17 20:17:01
  2. JS 正则表达式语法

    正则语法预定义类[^\n\r] 除了换行和回车之外的任意字符(“”不行)\d [0-9] 数字字符\D [^0-9] 非数字字符\s [ \t\n\x0B\f\r] 空白字符\S [^ \t\n\x0B\f\r] 非空白字符\w [a-zA-Z_0…...

    2024/4/17 20:16:14
  3. BeanShell特殊变量和值

    除了作用与修饰符:“this”、“super”、“global”之外,BeanShell 支持大量系统预定义的变量,“不可思议的”值和方法。特殊的值 $_ —— 最后一个表达式评估的值。这种奇怪的构造沿用自 Perl 语言,但是这种想法存在于许多脚本语言中。在交互地工作中方便你取得最后的结果…...

    2024/4/12 23:47:43
  4. hadoop——subprocess failed with code

    这两天在执行hadoop streaming (用的脚本是python),一直出现subprocess failed with code 这个错误,看了streaming 源码,上面写的是系统抛出的异常,但是怎么也搞不明白为什么系统会抛出异常呢?百思不得其解啊!看了http://taoo.iteye.com/blog/1486650这个博客给我了一点…...

    2024/4/17 20:16:50
  5. SuperMap iClient3D for WebGL教程(Entity)-WallGraphics

    作者:为梦齐舞本文同步更新于简书文章[https://www.jianshu.com/p/61e6efd66b44] 本节我们来一起学习下WallGraphics这个对象,这个对象也是属于Entity是他对象的,Wall是一个墙对象,可以沿着地面或海拔高度进行放置,是竖立着加载到场景中的,我们来看一个使用Wall做的效果代…...

    2024/4/17 20:17:20
  6. linux命令之grep命令

    grep 在文本中检索字符串(单个文本和多个文本grepwxc@wxc-Lenovo-G40-30:/$ grep zcv /home/wxc/linuxEdit zcvveve rfrgvzcv wxc@wxc-Lenovo-G40-30:/$ grep zcv /home/wxc/linuxEdit /home/wxc/22 /home/wxc/linuxEdit:zcvveve /home/wxc/linuxEdit:rfrgvzcv /home/wxc/22:z…...

    2024/4/20 12:35:43
  7. SuperMap iClient3D for WebGL教程(Entity)-PolylineGraphics

    作者:为梦齐舞本文同步更新于简书文章[https://www.jianshu.com/p/ac63fdfeb5b1] 本节继续学习PolylineGraphics对象,这个是一个折线类型,可以根据坐标直接添加到场景中,也可以对折线设置一定的风格符号,接下来我们一起学习下吧。 首先来看一个折线的尾迹线效果实现代码如…...

    2024/4/17 20:16:49
  8. subprocess理解

    Linux进程 导语 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令 (instruction)。所谓的程序(program),就是这样一系列指令的所构成的集合。通过程序,我们可以让计算机完成复杂的操作。程…...

    2024/4/17 20:16:56
  9. Jmeter中利用BeanShell Sampler与控制台进行交互

    1、 最近在利用Jmeter实现自动化脚本时遇到了需要与控制台交互的场景,业务中涉及到银行卡密码的敏感信息需要做特殊处理(之前在测试环境密码是不校验的故参数都写在CSV文件中)。此次项目需要在线上环境做测试,于是我吧密码的地方用键盘输入的方式进行处理。另外输入的密码只…...

    2024/4/17 20:16:07
  10. spring中连接池的配置

    在默认通过myeclipse生成的配置里,spring使用的是apache的dbcp连接池 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> &l…...

    2024/4/17 20:16:56
  11. STM32F429之USART管脚复用

    在f429中 USART1串口1 tx/rx PA9 PA10 串口1、6 APB2时钟USART2串口2 PA2 PA3 串口2、3、4、5、7 APB1时钟什么叫管脚复用STM32F4有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当…...

    2024/4/17 20:16:20
  12. STM32F429在SDRAM中定义变量不用指定地址方法

    第一次在CSDN上写博客,一是记录此词调试STM32F429外部SDRAM时遇到得问题及解决方法,二是做一个笔记以便往后复习。正题开始!-----------------------------------------------------------------------一小段废话分割线---------------------------------------------------…...

    2024/4/18 8:21:31
  13. Jmeter报这个错BeanShell Sampler

    故事背景jmeter中创建一个BeanShell Sampler。编写了一个BeanShell Sampler脚本。结果,报错了…… 代码如下:String s = "s"; String y = "y"; boolean result = s.equals(y); vars.put("result2",result);如图: 报错如下: 详细报错代码:Er…...

    2024/4/19 19:38:47
  14. C3P0连接池的详细配置

    <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> <property name="acquireIncrement">3</property> <!--定义在从数据库获取新连接失败后重复尝试的次数。De…...

    2024/4/17 20:46:30
  15. python v3.3.2中使用subprocess模块与其它程序进行管道通信

    下面是python脚本sup.py:import subprocessp = subprocess.Popen("test.exe", stdin = subprocess.PIPE,stdout = subprocess.PIPE, stderr = subprocess.PIPE, universal_newlines=True,shell = False) p.stdin.write(5\n) p.stdin.write(3\n) print(p.stdout.read…...

    2024/4/17 20:16:25
  16. Unity发布WebGL注意事项以及移动端打开webgl网页

    Unity发布WebGL网页端 Unity发布webGL项目时存在很多的易错点,这些错误点没有统一的规律,因为是跨平台开发,开发过程中需要去解决未知的和已知的报错点,下面就我这两年开发WebGL遇到的问题做一个总结,还有的就是大家常遇到的坑我也进行汇总。资源导入 :关键字:顶点、分辨…...

    2024/4/17 20:17:02
  17. Jmeter之Beanshell测试加密接口

    课程目标 1. 什么是Bean Shell2. Jmeter有哪些Bean Shell3. 加密算法MD5,AES,RSA介绍.4. 处理各种加密BeanShell的使用用法5. Bean Shell常用内置变量 1.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种…...

    2024/4/20 2:34:18
  18. 野火挑战者STM32 F429 V1开发板免费试用

    产品简介 本次试用说明: 1.本活动试用名额由人工审核,无分享任务 2.审核通过后,产品将在3个工作日内由社区寄出(包邮) 3.审核通过后,试用者2-3月内提交报告后,报告经社区审核通过后,将获赠本活动板卡无需归还; 4.如试用者提交报告未通过审核,需将开发板原样归还(邮费…...

    2024/4/20 7:16:10
  19. mongoose 学习之路 ( 一 )

    我们先来上一个直观的例子吧: 第一次使用 mongoose // 目录结构 -model-db.js // 链接数据库-test1.js // 定义模型 - app.js - package.json 安装mongoose cnpm install mongoose --save // db.js var mongoose = require(mongoose); mongoose.connect(…...

    2024/4/19 9:56:07
  20. python_subprocess_unity

    用python3下的subprocess库来操纵unity命令行的演示:# Q: 用python + subprocess调用unity命令 # A: # 方式一: import subprocess cmd = rUnity.exe -batchmode -projectPath F:\projects\unity2017\20171207_CommandLine -executeMethod MyEditorScript.PerformBuild -qui…...

    2024/4/22 20:49:51

最新文章

  1. 微前端qiankun

    webcomponent 微前端&#xff1a;将产品的各个功能模块作为一个个独立的应用系统&#xff0c;然后将这些模块整合起来组装成完整的产品。 具体使用 https://qiankun.umijs.org/zh/guide/tutorial 注意&#xff1a;微应用需要配置打包格式和跨域&#xff1b; 打包格式&#xf…...

    2024/4/25 7:10:39
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【Godot4自学手册】第三十五节摇杆控制开门

    本节主要实现&#xff0c;在地宫墙壁上安装一扇门&#xff0c;在核实安装一个开门的摇杆&#xff0c;攻击摇杆&#xff0c;打开这扇门&#xff0c;但是只能攻击一次&#xff0c;效果如下&#xff1a; 一、添加完善节点 切换到underground场景&#xff0c;先将TileMap修改一下…...

    2024/4/23 5:54:10
  4. 启扬RK3568核心板助力智慧步道轻装健身,打造全民健康生活新方式

    随着物联网、AI智能等新技术的快速发展&#xff0c;智慧步道成为全国各地公园建设和全民健身公共服务设施改造的新主题。智慧步道基于物联网、人脸识别、大数据分析等技术&#xff0c;对人们的运动进行监测和数据采集&#xff0c;显示运动数据&#xff0c;包括里程统计、热量消…...

    2024/4/24 10:51:56
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/23 20:58:27
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/23 13:30:22
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/23 13:28:06
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/24 18:16:28
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/23 13:27:44
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/19 11:57:53
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/23 13:29:53
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/23 13:27:22
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/23 13:28:42
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/23 22:01:21
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/23 13:29:23
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/25 0:00:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/25 4:19:21
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/19 11:59:23
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/19 11:59:44
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/24 16:38:05
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/23 13:28:14
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/23 13:27:51
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/23 13:27:19
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57