STM32自己从零开始实操08:STM32主控原理图

由于老师使用的各引脚分门别类的单片机原理图我没有找到,我使用是引脚按顺序摆放的,不方便一个模块一个模块截图展示,所以这部分使用老师的原理图。

一、电源

1.1电源的介绍

1.1.1数字电源和地(VDD和VSS)

数字电源引脚提供电压给所有的数字电路部分。这些数字电路包括:

  • 处理器核心: 执行指令、处理数据。
  • 存储器: 包括 Flash 和 SRAM,用于存储程序和数据。
  • 数字外设: 包括 GPIO、UART、SPI、I2C、TIMERS 等,用于各种数字通信和控制。
  • 内部振荡器: 产生时钟信号以驱动处理器和其他外设。

数字地引脚提供了所有数字电路部分的接地参考点,有:

  • 所有通过 VDD 供电的电流最终都会返回 VSS,以形成一个完整的电流回路。
  • 在 PCB 设计中,所有的 VSS 引脚通常都连接到一个共同的地平面,以减少电噪声和干扰。

1.1.2模拟电源和地(VDDA和VSSA)

模拟电源引脚提供电压给所有的模拟电路部分。主要包括:

  • ADC(模数转换器): 将模拟信号转换为数字信号。
  • DAC(数模转换器): 将数字信号转换为模拟信号。
  • 内部参考电压源: 提供一个稳定的参考电压给 ADC 和 DAC ,确保转换精度。

模拟地引脚提供了所有模拟电路部分的接地参考点,有:

  • 与 VSS 相同,所有通过 VDDA 供电的电流最终都会返回 VSSA,以形成一个完整的电流回路。

1.1.3两电源的区别与联系

数字电路通常会产生高频开关噪声,这些噪声如果直接干扰到模拟电路,会导致模拟信号的不稳定和精度下降。因此,使用独立的模拟电源和接地可以减少这种干扰。

模拟电路需要一个非常干净、稳定的电源,以确保精确的信号处理,因此 VDDA 通常通过额外的滤波电路进行去耦。

为了减少数字电路产生的高频噪声对模拟电路的干扰,VSSA 和 VSS 通常在 PCB 设计中被单独处理,只有在一个单点连接,通常是靠近电源入口的地方。

1.2滤波介绍

将 3.3V 的电源引入供单片机使用。

(1)120R 磁珠

  • 作用: 磁珠是一种高频阻抗元件,串联在电源线上,阻止高频噪声沿电源线传播。
  • 原理: 磁珠在直流和低频交流信号下表现为低阻抗,但在高频下表现为高阻抗,从而滤除高频噪声。
  • 选择: 120Ω 的磁珠通常用于中等频率范围的噪声抑制。它在高频范围内提供足够的阻抗来衰减噪声。

(2)10µF 电容

  • 作用: 10µF 电容用于低频滤波,平滑直流电压,消除较低频率的电源波动。
  • 原理: 较大电容值在低频下有较小的阻抗,可以有效地平滑直流电压和滤除低频噪声。
  • 位置: 10µF 电容通常放置在电源入口处,以平滑整个电源网络的电压。

(3)0.1µF 电容

  • 作用: 0.1µF 电容用于高频滤波,抑制高频噪声和尖峰干扰。
  • 原理: 较小电容值在高频下有较小的阻抗,可以有效地滤除高频噪声和尖峰干扰。
  • 位置: 0.1µF 电容通常放置在每个 VDD/VDDA 引脚附近,尽量靠近 IC,以提供最有效的高频噪声滤波。 

(4)10nF 电容

  • 补充滤波频段: 与其他滤波电容(10µF、0.1µF)结合使用,可以覆盖更宽的频率范围,为模拟电源提供全频段的电源噪声抑制(上面也说了模拟电源需要非常的纯净)。

1.3电路图

1.4陈氏理解(可能只有我自己能看懂)

数字信号(数字电源供电)比如信号线上的差分信号,1 就是 1 , 0 就是 0 ,差别还是挺大的,不容易混淆,但是变化快,存在对其他形式信号的干扰(此处就是指模拟信号),所以将数字信号和模拟信号区分开了。

再其次,模拟信号不像数字信号那样 1 就是 1 ,0 就是 0 ,它的值是多少会换算成相应的二进制数字,所以更要准确,滤波也更严格。

二、复位

2.1工作过程

  1. 正常工作状态: 当复位按钮未按下时,上拉电阻将 RST 引脚维持在高电平。此时,微控制器处于正常工作状态。
  2. 按下复位按钮: 当按下复位按钮时,RST 引脚被直接拉低到地。这触发了微控制器的复位过程。
  3. 释放复位按钮: 当释放复位按钮时,RST 引脚通过上拉电阻恢复到高电平。需要去耦电容帮助滤除任何在恢复过程中的瞬态噪声(也有按下过程的去耦),确保 RST 引脚稳定地返回高电平,从而使微控制器从复位状态中正常启动。

2.2特殊情况

  • 外部干扰: 在有较强电磁干扰的环境中,复位引脚可能会受到干扰,导致误复位。适当的滤波电路(如更大的电容或更低的上拉电阻)可以进一步增强抗干扰能力。
  • 复位时间: 去耦电容的值决定了复位信号的时间常数。较大的电容会导致较长的复位时间,但可以更好地滤除低频噪声。需要根据实际应用进行选择。

2.3我有一个愚蠢的问题

问:为什么上拉到的电源是数字电源 VDD 而不是模拟电源 VDDA ?

答:

1. 电源稳定性

VDD 稳定性: VDD 是数字电源,通常由稳压器直接供电,电压相对稳定,且开机时能快速达到稳定值。复位电路需要一个稳定的电压源来保证复位信号的可靠性。

VDDA 依赖 VDD: VDDA 是模拟电源,虽然也很稳定,但它通常依赖于 VDD 的供电,在一些设计中,VDDA 可能会经过滤波和调节以满足模拟电路的需求,启动速度和稳定性可能稍微慢于 VDD。

2. 复位电路对数字电路的作用

复位电路主要针对数字电路: 复位信号主要用于重置 STM32 内部的数字电路(包括 CPU 和外设)。数字电路的工作电压是 VDD,因此复位引脚上拉到 VDD 更为合适。

3. 电源电流负载考虑

VDD 电流能力强: VDD 电源的电流供应能力通常大于 VDDA,因为它要供电给整个数字部分,包括处理器、内存和外设等。上拉电阻的电流负载对 VDD 的影响微乎其微。

VDDA负载要求高: VDDA 电源主要供电给模拟部分(如 ADC、DAC 等),这些电路对电源的纹波和噪声要求更高。将上拉电阻连接到 VDDA 可能会引入不必要的负载和噪声,影响模拟电路的性能。

2.4电路图

三、BOOT 启动

3.1介绍

BOOT 引脚( BOOT0 和 BOOT1 )用于选择微控制器的启动模式。通过不同的引脚电平组合,可以选择不同的启动模式,如下图所示:

3.2电路

将单片机的 BOOT0 和 BOOT1 引脚引出,通过 2×3 的公排针,可以通过跳线帽向上选择VDD_MCU (1),向下选择 GND (0),来配置单片机的启动模式。老师选择的启动方式为:从内置 SRAM 启动,如下图。

四、晶体电路

4.1 为什么STM32需要两个晶振电路?

STM32微控制器通常使用两个晶振电路是为了满足不同的时钟需求:

  • 主晶振电路(8MHz): 用于提供主系统时钟(HSE, High-Speed External Clock)。这个时钟源通常用于微控制器的核心处理单元、高速外设(如USB、CAN等),以及需要高精度、高速时钟的功能。
  • 副晶振电路(32.768kHz): 用于提供低功耗时钟(LSE, Low-Speed External Clock)。这个时钟源通常用于实时时钟(RTC, Real-Time Clock)和低功耗模式下的计时功能。32.768kHz的频率正好适合计时,因为它可以方便地用于生成1秒的时钟周期(32,768是2的15次方,适合二进制计数)。

4.2 为什么这两个晶振电路的频率是那样?

选择不同频率和规格的晶振主要基于以下原因:

  • 8MHz晶振(主晶振):

    • 频率选择: 8MHz是一个常用的高频率,能够满足STM32核心和高速外设的时钟需求。
    • 负载电容(22pF): 确保晶振在该频率下的稳定性和可靠性。22pF是常见的负载电容值,用于匹配晶振的负载要求。
  • 32.768kHz晶振(副晶振):

    • 频率选择: 32.768kHz是标准的RTC晶振频率,适用于低功耗时钟应用。
    • 负载电容(10pF): 这种低值电容适合低频率晶振,确保其在低频下的稳定振荡。

4.3 晶振电路是怎么运作的?(更容易理解4.4和4.5的问题)

(1)晶振起振

  • 当电源接通时,晶振开始产生微弱的振荡信号。
  • 该信号通过OSC_IN引脚进入STM32内部振荡器电路。

(2)负载电容调节

  • C1和C2电容与晶振一起工作,确保晶振以其标称频率振荡。
  • 负载电容值通常选取在10pF到22pF范围内,但实际值应根据晶振的规格书和电路板的寄生电容进行调整。

(3)信号放大

  • STM32内部的振荡器电路对输入的微弱振荡信号进行放大,生成一个稳定的时钟信号。
  • 这个稳定的时钟信号通过OSC_OUT引脚输出,并作为系统时钟供STM32使用。

(4)信号反馈

  • 振荡器电路将放大的振荡信号通过OSC_OUT引脚反馈回晶振电路,继续维持晶振的振荡。
  • 这个反馈环路确保晶振能够持续产生稳定的振荡信号。

(现在你就清楚了晶振电路中存在的一个回路了。)

4.4 为什么主晶振电路OSC有大电阻?有什么作用吗?

主晶振电路中包含一个1MΩ的大电阻(通常连接在OSC_IN和OSC_OUT之间),其主要作用如下:

  • 防止启动困难: 大电阻提供了一个初始反馈路径,有助于晶振在上电时快速启动,避免由于初始状态不稳定导致的启动困难。
  • 稳定振荡: 大电阻能够稳定振荡器的启动过程,确保振荡器能够在启动后快速进入稳定状态。

(说的通俗一点就是快一点形成4.3中说的电流回路。)

4.5 为什么副晶振电路OSC32没有大电阻?

副晶振电路通常不需要大电阻的原因包括:

  • 频率和功率低: 32.768kHz的晶振工作在非常低的频率和功率下,启动相对容易,不需要额外的电阻来帮助启动。
  • 低功耗设计: 副晶振电路通常用于RTC和低功耗应用,添加大电阻会增加功耗,不符合低功耗设计的要求。

4.6电路图

五、RTC 实时时钟

5.1 VBAT 引脚的功能

VBAT 引脚用于为 RTC 和备份寄存器供电,以便在主电源断开时,RTC 仍能继续运行。

5.2设计原理

  1. 主电源供电(VDD_MCU): 当主电源(VDD_MCU)供电时,BAT54-C 二极管正向偏置,VBAT 引脚通过二极管获得 VDD_MCU 的电压,RTC 和备份寄存器正常工作。
  2. 备用电源供电: 当主电源断开时,BAT54-C 二极管防止电流反向流动,RTC 和备份寄存器可以通过 ZH1.25-2A 连接器从备用电源(如纽扣电池)继续供电,确保 RTC 的时间和备份数据不会丢失。

5.3原理图

5.3.1BAT54-C二极管的作用

  1. 保证供电: 当主电源存在时,二极管正向偏置,保证 VBAT 引脚获得稳定的电压供电;当主电源断开时,二极管反向偏置,备用电源立即接替供电,保证 RTC 持续运行。
  2. 防止反向电流: 确保在主电源断开时,备用电源电流不会流回到主电源电路,避免不必要的电能消耗和可能的电路损坏。同时也保证在主电源正常供电时,芯片的电流不会回流到备用电池中,造成损害。

5.3.2 ZH1.25-2A连接器的作用

  1. 备用电源接口: 提供一个连接备用电源的接口,可以方便地连接和更换电池或其他备用电源。
  2. 确保供电路径: 通过 ZH1.25-2A 连接器,备用电源可以可靠地提供电压给 VBAT 引脚,确保RTC的供电不中断。

六、Flash 芯片

6.1芯片功能

在 STM32 微控制器中,外部 Flash 存储器(如本项目使用的 W25Q64JVSSIQ)通常用于存储固件、数据日志或其他需要非易失性存储的应用。

6.1引脚介绍和电路设计理念

1. CS# (Chip Select):
  • 设计: CS# 引脚通过 PA15 引脚控制。低电平激活芯片,高电平关闭芯片。
  • 原理: 当 CS# 为低电平时,Flash 芯片被选中,STM32 可以与其通信;当 CS# 为高电平时,Flash 芯片处于非活动状态,由于多个 SPI 设备可以共享同一条 SPI 总线,此时其他设备可以进行通信。
2. SO (Serial Output):
  • 设计: SO 引脚通过 PB4 引脚(MISO,Master In Slave Out)连接到 STM32。
  • 原理: 用于在 SPI 通信中将数据从 Flash 芯片发送到 STM32。
3. WP# (Write Protect):
  • 设计: WP# 引脚直接连接到 3.3V 电源。
  • 原理: 将 WP# 连接到高电平(3.3V)禁用写保护功能,使能写操作。
4. GND (Ground):
  • 设计: GND 引脚连接到地。
  • 原理: 提供芯片的电源回路。
5. SI (Serial Input):
  • 设计: SI 引脚通过 PB5 引脚(MOSI,Master Out Slave In)连接到 STM32。
  • 原理: 用于在 SPI 通信中将数据从 STM32 发送到 Flash 芯片。
6. CLK (Clock):
  • 设计: CLK 引脚通过 PB3 引脚连接到 STM32。
  • 原理: 提供 SPI 通信的时钟信号,由 STM32 生成并控制。
7. HOLD3#:
  • 设计: HOLD3# 引脚连接到 3.3V 电源。
  • 原理: 将 HOLD3# 连接到高电平(3.3V)禁用暂停功能,使 Flash 芯片正常工作。
8. VCC (Power Supply):
  • 设计: VCC 引脚连接 3.3V 电源。
  • 原理: 为 Flash 芯片提供工作电压。
9、电源滤波电路
  • 设计: 3.3V 电源通过 0.1uF 电容连接到地。
  • 原理: 去耦电容用于滤除电源线上的高频噪声,稳定供电,确保 Flash 芯片正常工作。

6.2电路运行

  1. 上电: 3.3V 电源为 Flash 芯片提供电源,电容滤除电源噪声。
  2. SPI 通信: STM32 通过 SPI 接口(PA15, PB3, PB4, PB5引脚)与 Flash 芯片通信:
    • PA15 控制 CS#,选择芯片。
    • PB3 提供时钟信号(CLK)。
    • PB5 发送数据到 Flash 芯片(MOSI)。
    • PB4 接收 Flash 芯片的数据(MISO)。
  3. 写保护: WP#(就是下图中的 IO2) 连接到高电平,确保写操作不被禁用,方便数据写入。
  4. 暂停功能: HOLD3# (就是下图中的 IO3)连接到高电平,禁用暂停功能,确保正常操作。

6.3其他设计方法

  1. 硬件写保护: 如果需要硬件写保护功能,可以将 WP# 引脚连接到 STM32 的一个 GPIO 引脚,通过软件控制写保护状态。
  2. 使用较大电容: 在电源滤波电路中,可以根据实际情况使用更大容量的电容(如 1uF 或10uF )进一步平滑电源电压。
  3. 增加缓冲电路: 在噪声较大的环境中,可以在 SPI 信号线上增加缓冲电路,提高通信可靠性。(具体方法:使用缓冲芯片、串联电阻、电容滤波、使用屏蔽电缆。)

七、SWD 调试接口

SWD(Serial Wire Debug)是一种调试和编程接口,广泛应用于 ARM Cortex-M 系列微控制器。它通过两条数据线(SWDIO 和 SWCLK)实现高效的调试和编程,其功能如下:

  • 调试和编程: SWD 接口是用于调试和编程微控制器的标准接口。通过它可以进行固件下载、调试、断点设置、变量查看等操作。
  • 简化连接: 通过标准化的引脚和接口,可以方便地连接调试器,简化调试和编程过程。
  • 可靠通信: 通过上拉和下拉电阻,确保信号线在空闲状态下处于稳定的电平,避免噪声干扰。

在本项目中这部分电路包括三部分:

  1. HDR-M-2.54 1x5
  2. XYXH2.54-5A11
  3. 简牛 2.54mm 2x10 直

这三部分都提供了 SWD 接口,但形式和连接方式略有不同。

7.1 HDR-M-2.54 1x5

7.1.1电路图

7.1.2功能和原理

  • VCC 和 GND: 提供电源和地线,确保调试器和 STM32 有共同的电源参考。
  • NRST : 用于外部复位 STM32。调试器可以控制 NRST 引脚复位 STM32
  • SWDIO(Serial Wire Debug Input/Output): 双向数据线,用于传输调试和编程数据。
  • SWCLK(Serial Wire Clock): 时钟信号,由调试器生成,为 SWD 通信提供时序参考。

7.2 XYXH2.54-5A11

7.2.1电路图

7.2.2功能和原理

此部分与 HDR-M-2.54 1x5 功能相同,只是引脚和连接形式有所不同。

7.3上下拉电阻

至于为什么前者有上下拉电阻,而后者没有,解释如下:

(1)选择上拉和下拉电阻的考虑因素

  1. 环境噪声: 如果系统工作在高噪声环境中,建议加入上拉和下拉电阻。
  2. 引脚稳定性: 需要确保引脚在调试器未连接或未启用时保持稳定状态。
  3. 调试器特性: 有些调试器内部已经集成了上拉和下拉电阻,可以省略外部电阻。

(2)为什么HDR-M-2.54 1x5 有上拉和下拉电阻?

  • 适用性: HDR-M-2.54 1x5 设计中加入上拉和下拉电阻,确保在调试器未连接或未启用时,引脚状态稳定。
  • 提高可靠性: 通过上拉和下拉电阻,避免在未连接调试器或调试器未驱动时,因噪声导致的误动作,提高系统的可靠性。

       具体连接

  • SWDIO(上拉): 10kΩ电阻上拉到3.3V,确保在未连接调试器时,SWDIO引脚保持高电平,避免悬空状态。
  • SWCLK(下拉): 10kΩ电阻下拉到地,确保在未连接调试器时,SWCLK引脚保持低电平,避免悬空状态。

(3)为什么XYXH2.54-5A11 没有上拉和下拉电阻?

  • 设计简化: XYXH2.54-5A11 是为了设计简化,省略了上拉和下拉电阻,以便更灵活地使用不同的调试器。
  • 依赖外部电路: 在一些设计中,可能依赖于调试器或开发板上的上拉和下拉电阻,而不在接口电路中直接配置。
  • 环境不同: 在一些应用环境中,可能认为外部干扰较小,上拉和下拉电阻的需求不强,因此省略。

7.4 简牛 2.54mm 2x10 直

这里不得不提到调试有两种调试的模式了JTAG 模式和 SWD 模式,前者接口多,更适合复杂的硬件设计,后者信号线少,适合有限的嵌入式系统。这里保留了 JTAG 的接口(方便后续改进)但是只使用了 SWD 模式。

7.4.1电路图

7.4.2功能和原理

同上。

7.4.3拓展

此部分提供了一个标准的 JTAG 接口形式,但只使用了 SWD 所需的引脚,其余未使用的引脚被标记为无连接或被叉掉。

(1)被叉掉的引脚
  1. TRST(引脚3):

    • 功能: JTAG 复位信号,用于复位 JTAG 调试逻辑。
    • 为什么叉掉: 在 SWD 模式下,TRST 引脚不使用,因为 SWD 模式不需要单独的 JTAG复位信号。
  2. TDI(引脚5):

    • 功能: JTAG 测试数据输入,用于输入测试数据。
    • 为什么叉掉: 在 SWD 模式下,TDI 引脚不使用,因为 SWD 模式不需要单独的数据输入引脚。
  3. TDO/SWO(引脚13):

    • 功能:
      • TDO(Test Data Out): JTAG 测试数据输出,用于输出测试数据。
      • SWO(Serial Wire Output): 在 SWD 模式下,作为串行输出,用于调试信息输出。
    • 为什么叉掉: 在一些简化设计中,SWO 引脚未使用或未连接。
  4. NC(引脚9, 11, 15, 17):

    • 功能: 无连接(Not Connected),没有分配特定功能。
    • 为什么叉掉: 这些引脚在特定设计中未被使用。
(2)复用引脚的解释

复用引脚(TMS/SWDIO, TCK/SWCLK)具有双重功能,支持 JTAG 和 SWD 两种调试协议。具体功能如下:

  1. TMS/SWDIO(引脚7):

    • TMS(Test Mode Select): 在 JTAG 模式下,用于选择测试模式。
    • SWDIO(Serial Wire Debug Input/Output): 在 SWD 模式下,作为双向数据线,传输调试和编程数据。
  2. TCK/SWCLK(引脚9):

    • TCK(Test Clock): 在 JTAG 模式下,用于提供测试时钟信号。
    • SWCLK(Serial Wire Clock): 在 SWD 模式下,用于提供串行时钟信号。
(3)复用功能的使用

在实际使用中,调试器和微控制器会根据配置选择合适的调试协议和引脚功能。例如:

  • 当选择 SWD 模式时,TMS/SWDIO 引脚配置为 SWDIO,TCK/SWCLK 引脚配置为SWCLK。
  • 当选择 JTAG 模式时,TMS/SWDIO 引脚配置为TMS,TCK/SWCLK 引脚配置为 TCK,且可能使用 TDI 和 TDO 引脚。
(4)其他硬件设计方案

除了上述设计方案,还有其他设计可以考虑:

  1. 仅 SWD 接口: 如果只需要 SWD 调试功能,可以仅保留 SWDIO 和 SWCLK 引脚,省去不必要的 JTAG 引脚。
  2. 多功能接口: 设计一个多功能调试接口,可以同时支持 JTAG 和 SWD,并根据需要切换使用。
  3. 板载调试器: 设计一个板载调试器,如 ST-LINK,直接集成到开发板上,提供更方便的调试和编程接口。
(5)其他调试模式

除了SWD和JTAG模式,还有其他一些调试和编程模式:ISP、UART、I2C、SPI 等。

八、STM32

重头戏来了,有点紧张。

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

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

相关文章

中国各省养老机构数据明细(更新至2024年)

中国养老机构是指为老年人提供集中居住、生活照顾、健康管理、文化娱乐等综合性服务的设施。这些机构包括养老院、福利院、老年公寓等多种形态,既有公立也有民办,遍布城市与农村。 一、数据介绍 数据名称:中国养老机构数据明细 数据范围&am…

[leetcode]minimum-cost-to-reach-destination-in-time 规定时间内到达终点的最小费用

. - 力扣&#xff08;LeetCode&#xff09; class Solution { private:// 极大值static constexpr int INFTY INT_MAX / 2;public:int minCost(int maxTime, vector<vector<int>>& edges, vector<int>& passingFees) {int n passingFees.size();ve…

LinkedList----源码分析

源码介绍 public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable{} 添加过程中的操作&#xff1a; 当创建LinkedList类时&#xff0c;会调用其空参构造方法&#xff0c;将其参…

ipv4和ipv6的兼容性问题

ipv4和ipv6的兼容 现今大多知名网站都是同时支持ipv6和ipv4&#xff0c;这种可以分为两种情况讨论&#xff1a; 一个IPv4的网络和一个IPv6的网络通信;一个IPv6的网络和一一个IPv6的网络通信&#xff0c;但是中间需要经过一一个IPv4的网络。 先以第一种为例&#xff1a; 若一…

昇思大模型——MindFormers的使用----从零开始安装配置环境

MindSpore Transformers套件的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件&#xff0c;提供业内主流的Transformer类预训练模型和SOTA下游任务应用&#xff0c;涵盖丰富的并行特性。期望帮助用户轻松的实现大模型训练和创新研发。 MindSpore Transform…

Linux编程第三篇:Linux简介,开源软件简介(Linux是否安全?参考TESEC指标)

业精于勤荒于嬉&#xff0c;行成于思毁于随。 今天这篇算是Linux的正式学习&#xff0c;废话不多说&#xff0c;我们开始吧 第三篇 一、UNIX与Linux发展史1.1、UNIX发展历史和发行版本1.2、UNIX主要发行版本1.3、Linux发展历史1.4、Linux内核版本1.5、Linux主要发行版本 二、开…

渐变且描边文字

效果&#xff1a; 用 background-image&#xff1a;linear-gradient实现渐变、 text-shadow实现描边 元素同时添加&#xff1a; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 1), rgba(143, 180, 253, 1));-webkit-background-clip: text;background-…

Spring支持人工智能应用框架-SpringAi

简介 人工智能技术和日益成熟&#xff0c;开发企业级人工智能的应用已成为一个热门的趋势。Spring AI 是一个用于 AI 工程的应用框架&#xff0c;目的是为了简化AI应用的对接、部署、维护和扩展。 SpringAi的灵感来自LangChain和LlamaIndex&#xff0c;但是SpringAi并不是直接…

Python实现动态迷宫生成:自动生成迷宫的动画

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义迷宫生成类主循环 完整代码 引言 迷宫生成算法在游戏开发和图形学中有着广泛的应用。它不仅可以用于创建迷宫游戏&#xff0c;还可以用于生成有趣的图案。在这篇博客中&#xff0c;我们将使用Python…

基于Java的校园交友网站系统

你好&#xff0c;我是专注于计算机技术研究的学姐码农小野。如果你对校园交友网站系统的构建或者相关技术感兴趣&#xff0c;欢迎私信交流。 开发语言 Java 数据库 MySQL 技术 Java语言、SpringBoot框架、B/S结构 工具 MyEclipse、Navicat、Maven 系统展示 首页 个人…

Postman:Body类型中的x-www-from-urlencoded参数可以接受GET请求吗?

不可以 今天学习Spring Web MVC&#xff0c;在借助Postman学习 RequestMapping 注解时&#xff0c;发现Body类型中的x-www-from-urlencoded参数不支持GET请求。 按理说 RequestMapping 注解可以支持全部类型的请求&#xff0c;但为何在这里不能支持GET请求呢&#xff1f; 以下是…

Diffusion 加速系列之三 | LCM

0. 资源链接 论文: LCM&#xff1a;https://arxiv.org/abs/2310.04378 项目: https://github.com/luosiallen/latent-consistency-model 1. 背景动机 现有的高分辨率的 diffusion 模型推理存在的问题&#xff1a; Diffusion 模型推理过程包含多步去噪的流程&#xff0c;这会…

VMware虚拟机使用标准分区后对分区进行扩容

前言&#xff1a; 使用虚拟机创建系统后&#xff0c;/ 盘 想要扩容需要几步才能实现&#xff0c;下面将介绍具体流程 确定根分区磁盘以及分区号&#xff0c;和起始扇区和结束扇区 # 查看磁盘名称和分区 # 如下可看出根分区为 /dev/sda2 &#xff0c;磁盘为sda [root192 ~]# ls…

【鸿蒙学习笔记】元服务

官方文档&#xff1a;元服务规格 目录标题 什么是元服务特征第一个元服务-案例介绍创建项目源码启动模拟器启动entry创建卡片出发元服务 什么是元服务 特征 免安装分包预加载老化和更新机制 第一个元服务-案例介绍 创建项目 源码 Entry Component struct WidgetCard {buil…

qt 线程举例

qt 线程举例 在Qt中&#xff0c;使用线程的一个常见方式是通过QThread类。下面是一个简单的例子&#xff0c;展示了如何创建一个线程并在其中执行任务。 步骤 1: 创建一个Worker类 首先&#xff0c;创建一个继承自QObject的Worker类&#xff0c;这个类将包含要在线程中执行的…

three完全开源扩展案例02-跳动的音乐

更多案例尽在https://threelab.cn/ 演示地址 import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";let mediaElement; let analyser; let scene; let camera; let renderer; let controls; …

RabbitMQ中常用的三种交换机【Fanout、Direct、Topic】

目录 1、引入 2、Fanout交换机 案例&#xff1a;利用SpringAMQP演示Fanout交换机的使用 3、Direct交换机 案例&#xff1a;利用SpringAMQP演示Direct交换机的使用 4、Topic交换机 案例&#xff1a;利用SpringAMQP演示Topic交换机的使用 1、引入 真实的生产环境都会经过e…

1. openstack

openstack 一、云的简介1、优势2、类型2.1 根据提供的服务范围2.2 根据提供服务不同 二、openstack核心组件1、核心组件2、nova组件2.1 nova核心进程 3、glance组件4、cinder组件5、neutron组件6、swift组件7、cellometer组件8、keystone组件9、heat组件10、dashboard 一、云的…

韦东山嵌入式linux系列-LED 驱动程序框架

1 回顾字符设备驱动程序框架 图中驱动层访问硬件外设寄存器依靠的是 ioremap 函数去映射到寄存器地址&#xff0c;然后开始控制寄存器。 那么该如何编写驱动程序&#xff1f; ① 确定主设备号&#xff0c;也可以让内核分配&#xff1b;② 定义自己的 file_operations 结构体&…

【LeetCode:1071. 字符串的最大公因子 + 模拟 + 最大公约数】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…