当前位置: 首页 > news >正文

【正点原子STM32】STM32原理图设计(芯片手册和数据手册、常见引脚类型、最小系统和IO分配)

一、学会查看数据手册

  • 获取芯片数据手册
  • 数据手册内容概要
  • 芯片的基本参数(STM32F103ZET6为例)
  • 正点原子开发板对应的主控型号和封装
  • STM32F103ZET6引脚分布
  • 常见的STM32引脚类型
  • 下载接口

二、最小系统

  • 电源电路
  • 复位电路
  • BOOT启动电路
  • 晶振电路
  • 下载调试电路
  • 串口一键下载电路

三、IO分配
四、总结

一、学会查看数据手册

获取芯片数据手册

硬件资料、芯片资料
ST官网:https://www.st.com
ST中文社区网:https://www.stmcu.org.cn/
在这里插入图片描述
在这里插入图片描述

数据手册内容概要

在这里插入图片描述
数据手册是一份详细的技术文档,提供了有关微控制器的广泛信息。以下是一份典型STM32微控制器数据手册可能包含的内容概要:

  1. 引脚定义和功能:

    • 引脚图和引脚定义表,详细描述每个引脚的功能。
    • 外设映射,显示各个外设如何连接到引脚。
  2. 电气特性:

    • 电源电压和电流规格。
    • 输入和输出电平的规格。
    • 工作和存储温度范围。
  3. 时钟系统:

    • 内部和外部时钟源的详细描述。
    • 时钟分频器和倍频器配置。
  4. 处理器内核:

    • 处理器内核的型号(例如,Cortex-M3、Cortex-M4等)。
    • 处理器特性,如指令集、中断控制器等。
  5. 存储器系统:

    • Flash存储器容量和分布。
    • RAM容量和分布。
    • 存储器接口和控制器。
  6. 外设和通信接口:

    • 详细描述每个外设的功能和配置。
    • 通信接口,如UART、SPI、I2C等的配置和规格。
  7. 时序图和时序规格:

    • 外设和总线的时序图,显示各个信号的时序关系。
    • 时序规格表,规定了时序要求。
  8. 电源管理:

    • 电源模块的详细说明,包括电源模式和低功耗模式。
    • 电源管理配置。
  9. 安全和保护特性:

    • 安全特性和硬件保护功能的说明。
    • 安全区域的配置和使用。
  10. 应用示例和建议:

    • 一些建议的应用电路图。
    • 使用外设和功能的最佳实践。
  11. 开发工具和支持:

    • 提供支持该微控制器的开发工具、编程器和调试器的信息。
    • 可用的软件库和驱动程序。
  12. 封装信息:

    • 支持的封装类型和尺寸。
    • 封装引脚图和引脚分配表。

这仅仅是数据手册中可能包含的内容的一个概要。确切的内容和细节会根据具体的STM32微控制器型号而有所不同。数据手册是开发和设计过程中的关键参考,开发人员可以通过仔细阅读数据手册来了解微控制器的所有方面,从而更好地利用其功能和性能。

芯片的基本参数(STM32F103ZET6为例)

在这里插入图片描述
在这里插入图片描述

正点原子开发板对应的主控型号和封装

在这里插入图片描述

STM32F103ZET6引脚分布

在这里插入图片描述

常见的STM32引脚类型

STM32微控制器的引脚通常具有不同的功能,以下是一些常见的STM32引脚类型:

  1. 电源引脚:

    • VDD: 正常工作电源供应,通常连接到系统的电源。
    • VSS: 地引脚,连接到系统的地。
  2. 晶振引脚:

    • XTAL/OSC: 用于连接外部晶振或时钟振荡器,提供系统时钟。
  3. 复位引脚:

    • NRST: 复位引脚,用于进行系统复位。
  4. 下载引脚:

    • SWD(Serial Wire Debug): 用于单线调试和编程,通常用于调试和固件更新。
  5. BOOT引脚:

    • BOOT0: 用于选择启动模式,通常与BOOT1引脚组合使用,决定系统启动时加载的程序源。
  6. GPIO引脚:

    • PAx, PBx, PCx, …: 通用输入/输出引脚,可配置为数字输入、数字输出、模拟输入等。
    • PEx: 特殊功能引脚,用于特定外设的连接。

以上是一些通用的引脚类型,具体的引脚功能和标号可能会因不同的STM32型号而有所变化。在具体应用中,还需要查阅特定型号的引脚定义表和数据手册,以了解每个引脚的详细功能和配置。
在这里插入图片描述
在这里插入图片描述

下载接口

在这里插入图片描述
下载接口是用于将固件烧录到微控制器中的通信接口。STM32微控制器通常支持多种下载接口,其中包括JTAG、SWD(Serial Wire Debug)和串口接口。以下是它们的简要描述:

  1. JTAG(Joint Test Action Group):

    • 描述: JTAG是一种用于测试和调试的标准接口。除了用于烧录固件外,JTAG还可以用于硬件调试和测试。
    • 引脚数量: JTAG通常需要较多的引脚,包括TCK(时钟)、TMS(模式选择)、TDI(数据输入)、TDO(数据输出)等。
    • 应用: 主要用于硬件调试和测试。
  2. SWD(Serial Wire Debug):

    • 描述: SWD是一种用于调试和烧录的串行接口。相较于JTAG,SWD引脚数量较少,更适合资源受限的系统。
    • 引脚数量: SWD仅需要两个引脚,SWDIO(数据)和SWCLK(时钟)。
    • 应用: 主要用于烧录固件和调试。
  3. 串口接口:

    • 描述: 串口接口通常指的是通过串口(例如UART或USART)进行的烧录和通信。这通常是一种简单且易于实现的接口。
    • 引脚数量: 串口接口的引脚数量取决于具体的串口配置,通常包括TX(发送)和RX(接收)引脚。
    • 应用: 适用于简单的烧录和通信需求,但可能不如JTAG和SWD在调试方面灵活。

在选择下载接口时,通常需要考虑系统的调试和烧录需求,以及系统的资源限制。SWD因其简单性和较少的引脚需求而在嵌入式系统中得到广泛应用。 JTAG通常更适用于需要更多调试功能的高级应用。串口接口则是一种简单且易于使用的选项,适用于一些基本的应用场景。
在这里插入图片描述
在这里插入图片描述

二、最小系统

最小系统:保证MCU正常工作的最小电路组成单元
在这里插入图片描述
在这里插入图片描述

电源电路

在这里插入图片描述
电源电路是嵌入式系统中至关重要的一部分,为微控制器和外部设备提供稳定、可靠的电源。以下是一般嵌入式系统中可能包含的电源电路的一些基本组成部分:

  1. 电源输入:

    • 直流电源(DC Power): 微控制器通常需要一个稳定的直流电源。这可以是来自电池、适配器或其他直流电源的电压。
    • 电压范围: 电源电路通常需要适应一定的电压范围,以适应不同来源的电源。
  2. 电源稳压器(Voltage Regulator):

    • 线性稳压器或开关稳压器: 用于将输入电压稳定在微控制器需要的工作电压范围内。
    • 稳定输出电压: 通常为3.3V或5V,具体取决于微控制器的工作电压。
  3. 电源滤波和去耦电容:

    • 电源滤波: 电源线上的滤波电容用于减小电源线上的噪声。
    • 去耦电容: 在微控制器电源引脚附近放置的电容,用于提供瞬时电流,确保微控制器在瞬时高负载情况下有足够的电流供应。
  4. 电池管理电路(如果使用电池):

    • 充电电路: 如果系统使用可充电电池,可能需要包括充电电路。
    • 电池保护: 用于防止电池过充和过放。
  5. 电源指示灯或指示器:

    • 工作指示灯: 用于指示系统是否处于工作状态。
    • 充电指示灯(如果使用电池): 用于指示电池充电状态。
  6. 电源开关:

    • 软件控制或物理开关: 用于控制系统的电源供应。
  7. 过电流保护和过压保护:

    • 过电流保护: 防止系统中的电流超过设计规格。
    • 过压保护: 防止系统中的电压超过安全水平。
  8. EMI(电磁干扰)滤波器:

    • 抑制电磁干扰: 在电源线上添加滤波器,以减小系统产生的电磁干扰或抵御外部电磁干扰。

这些是典型的嵌入式系统电源电路的基本组成部分。具体的电源设计将根据系统的需求、电源来源和电源质量等方面进行调整。在设计电源电路时,确保电源稳定、可靠、满足系统需求,并考虑到可能出现的各种工作条件和环境。

复位电路

在这里插入图片描述
复位电路是嵌入式系统中一个重要的组成部分,负责确保系统在启动时以及在异常情况下能够可靠地进行复位。以下是一般嵌入式系统中可能包含的复位电路的基本组成部分:

  1. 复位引脚(NRST):

    • 描述: 通常是一个外部引脚,用于接收外部的复位信号。当复位引脚被拉低时,系统会执行复位操作。
    • 应用: 可由外部设备或其他电路拉低,触发系统复位。
  2. 复位电路(Reset Circuit):

    • 描述: 一组电路和元件,用于检测系统是否需要复位,并在需要时执行复位操作。
    • 应用: 监测电源上电、手动复位按钮、外部故障等情况。
  3. 复位触发条件:

    • 电源上电: 当系统电源上电时,复位电路确保进行初始化。
    • 手动复位按钮: 通过外部按钮或开关触发复位。
    • 看门狗定时器(Watchdog Timer): 如果系统未能定期喂狗,看门狗定时器可能触发复位。
    • 电压监测: 当电源电压低于阈值时,触发复位以防止不稳定操作。
  4. 复位持续时间:

    • 复位时间: 复位电路确保在一定时间内保持复位状态,以确保系统能够完全初始化。
    • 防止毛刺: 防止电源噪声或其他瞬时干扰引起的误复位。
  5. 复位源选择:

    • 可编程复位源: 有时可以通过配置选择不同的复位源,例如外部引脚、看门狗定时器等。
  6. 复位后的初始化状态:

    • 默认状态: 确保系统在复位后进入可预测的初始状态,以确保正常启动。
  7. 软件复位:

    • 通过寄存器: 一些系统允许通过软件操作触发复位。

复位电路的设计旨在确保系统在各种情况下都能够正常启动,并在异常情况下进行安全的复位。它是系统稳定性和可靠性的关键组成部分。在设计时,需要仔细考虑不同的复位触发条件,并确保复位电路符合系统的需求。

BOOT启动电路

在这里插入图片描述
BOOT启动电路是用于控制STM32微控制器启动模式的电路。STM32微控制器通常具有多种启动模式,其中BOOT引脚(通常是BOOT0)的状态用于选择不同的启动模式。以下是BOOT启动电路的基本组成部分:

  1. BOOT引脚(BOOT0):

    • 描述: 通常是一个外部引脚,用于选择不同的启动模式。BOOT引脚的状态由外部电路或用户设置决定。
    • 应用: 通过配置BOOT引脚的电平,可以选择不同的启动模式。
  2. 引脚电平状态:

    • BOOT引脚高电平: 可以指示微控制器启动到用户程序。
    • BOOT引脚低电平: 可以指示微控制器启动到系统引导加载程序(Bootloader)或其他启动模式。
  3. 内部上拉电阻:

    • 描述: BOOT引脚通常带有内部上拉电阻,以确保在未连接外部电路时有一个默认的电平状态。
    • 应用: 防止在未连接到外部电路时引起误操作。
  4. 电平转换电路(Optional):

    • 描述: 在一些应用中,可能需要电平转换电路,将外部的逻辑电平转换为BOOT引脚所需的电平。
    • 应用: 用于适应外部电路的逻辑电平。
  5. 引导模式配置:

    • 描述: 通过配置BOOT引脚的电平状态,可以选择不同的引导模式,如主Flash引导、系统引导加载程序引导等。
    • 应用: 根据需要选择不同的启动模式。
  6. 启动时序:

    • 描述: 在启动时,BOOT引脚的状态在系统初始化期间被检测,以确定启动模式。
    • 应用: 确保在启动时正确选择引导模式。

BOOT启动电路的设计旨在使系统能够选择不同的启动模式,以满足特定的应用需求。这对于在开发、调试和更新固件时具有灵活性非常重要。在设计时,需要仔细考虑BOOT引脚的电平转换、电源电路等方面,以确保启动模式的可靠切换和正确配置。

晶振电路

晶振电路是用于提供系统时钟的重要组成部分。在嵌入式系统中,晶振通常作为时钟源被连接到微控制器上。以下是晶振电路的基本组成部分:

  1. 晶振元件:

    • 晶振器(Crystal Oscillator): 一种精密的谐振电路,产生稳定的振荡频率。
    • 陶瓷谐振器(Ceramic Resonator): 一种较为简单、便宜的谐振元件,用于相对较低精度的时钟要求。
  2. 晶振引脚连接:

    • XTAL/OSC引脚: 用于连接晶振元件的引脚,将振荡信号提供给微控制器。
  3. 负载电容(Load Capacitors):

    • 描述: 用于调整晶振的谐振频率,确保振荡的稳定性。
    • 连接方式: 一端连接到晶振的每一个引脚,另一端接地。
  4. 电容匹配网络(Optional):

    • 描述: 在一些设计中,可能需要添加电容匹配网络,以确保晶振的性能。
    • 应用: 用于匹配晶振的电容需求。
  5. 电容引脚连接:

    • 描述: 电容引脚通常连接到微控制器引脚,提供所需的电容。
    • 连接方式: 连接到微控制器的相应引脚,以支持振荡器的稳定工作。

晶振电路的设计和选择取决于系统的时钟要求和性能。晶振提供的时钟频率通常是系统中其他部分操作的基准,因此其稳定性和准确性至关重要。在设计时,需要根据系统需求选择适当的晶振元件和相应的电路元件,以确保系统时钟的可靠性和准确性。

低速晶振和高速晶振

在这里插入图片描述
在这里插入图片描述
低速晶振和高速晶振是两种在嵌入式系统中用于提供时钟信号的晶振,它们有着不同的特性和应用场景。

  1. 低速晶振(Low-Speed Crystal Oscillator):

    • 频率范围: 通常指的是频率较低的晶振,例如32.768 kHz。
    • 用途: 低速晶振通常用于实时时钟(RTC)等需要较低时钟频率的应用。RTC通常用于处理与时间有关的任务,如实时时钟、定时器等。
    • 特点: 稳定性要求高,但频率相对较低,适用于低功耗要求和对时钟精度有较高要求的场景。
  2. 高速晶振(High-Speed Crystal Oscillator):

    • 频率范围: 通常指的是频率较高的晶振,例如8 MHz、16 MHz等。
    • 用途: 高速晶振通常用于微控制器的主时钟,提供处理器和外设所需的高频率时钟信号。适用于需要高性能计算的应用。
    • 特点: 稳定性同样重要,但频率较高,适用于对计算性能要求较高的嵌入式系统。

选择低速晶振还是高速晶振取决于系统的具体需求和应用场景。在实时时钟和低功耗应用中,可能更倾向于使用低速晶振。而在需要高性能计算和频繁数据处理的应用中,高速晶振可能更合适。同时,一些复杂的嵌入式系统可能会同时使用多个晶振,以满足不同部分的时钟需求。

下载调试电路

在这里插入图片描述
下载调试电路通常用于连接计算机或调试设备与嵌入式系统,以进行固件烧录、调试和数据传输。以下是下载调试电路的一些基本组成部分:

  1. 下载接口:

    • JTAG(Joint Test Action Group)或SWD(Serial Wire Debug): 常见的下载接口标准,用于连接计算机或调试器与嵌入式系统。
    • 串口接口(如UART): 一些系统使用串口进行简单的固件烧录和通信。
  2. 下载调试模块:

    • 描述: 一组硬件电路,用于连接下载接口和目标嵌入式系统。
    • 功能: 提供下载、烧录、调试和数据传输的接口。
  3. 调试器/编程器:

    • JTAG调试器、SWD调试器: 与下载接口标准兼容,用于连接计算机与目标系统进行调试。
    • 烧录器/编程器: 用于将固件烧录到目标嵌入式系统的设备。
  4. 调试引脚(Debug Pins):

    • 描述: 一组额外的引脚,通常与JTAG或SWD一同使用,用于连接调试器和目标系统。
    • 功能: 提供调试时需要的额外信号,如时钟、数据、复位等。
  5. 调试连接线和插座:

    • 调试线: 连接调试器和目标系统的电缆,传输调试和烧录所需的信号。
    • 插座: 在目标系统上提供与调试线连接的接口。
  6. 调试选择开关(Optional):

    • 描述: 一些系统可能包含一个开关,用于选择JTAG或SWD调试模式。
    • 应用: 允许在调试器和目标系统之间切换调试模式。
  7. 调试电源电路:

    • 描述: 用于为调试器和目标系统提供适当的电源电压。
    • 电源保护: 保护电源电路,防止潜在的过流或过压问题。
  8. 调试状态指示灯:

    • 描述: 指示调试器和目标系统之间的通信状态。
    • 应用: 提供用户可视反馈,确保连接正确。

下载调试电路的设计取决于使用的下载接口、目标系统的特征以及调试和烧录的需求。调试器和烧录器通常与特定的开发环境和IDE(集成开发环境)兼容,以提供方便的开发和调试工具。

串口一键下载电路

在这里插入图片描述
串口一键下载电路通常设计用于通过串口(如UART)进行固件下载的便捷电路。这种电路通常用于简单的应用场景,允许用户通过串口连接到目标系统并使用特殊的固件下载程序。以下是串口一键下载电路的一些基本组成部分:

  1. 串口接口:

    • UART引脚: 通常包括TX(发送)和RX(接收)引脚,用于与目标系统的串口通信。
  2. 下载按键(Download Button):

    • 描述: 一个物理按钮,用户按下以触发下载模式。
    • 功能: 通过按下按钮,用户可以切换目标系统进入下载模式,准备接收固件。
  3. 下载模式指示灯:

    • 描述: 一个LED指示灯,指示当前系统是否处于下载模式。
    • 功能: 提供用户视觉反馈,确保用户知道系统当前的状态。
  4. 串口下载模块:

    • 描述: 一个特殊的电路模块,用于与目标系统的串口进行通信,同时支持下载模式的切换。
    • 功能: 处理串口通信,与下载按钮协同工作,确保在下载模式下正确接收固件。
  5. 串口下载线和插座:

    • 描述: 连接串口下载模块与目标系统的电缆,传输下载和通信所需的信号。
    • 功能: 提供物理连接,确保可靠的通信。
  6. 电源电路:

    • 描述: 提供电源电路,确保下载模块和目标系统有足够的电力。
    • 电源保护: 防止潜在的电源问题。
  7. 下载模式选择开关(Optional):

    • 描述: 一些设计中可能包含一个开关,用于手动选择下载模式。
    • 应用: 允许用户手动切换下载模式。
  8. 自动波特率检测(Optional):

    • 描述: 一些设计中可能包含自动波特率检测功能,以适应不同的串口波特率。
    • 应用: 使系统更灵活,能够与不同波特率的串口通信。

这种串口一键下载电路的设计旨在使固件下载变得简单易用,用户只需按下下载按钮即可进入下载模式。这对于一些简单的嵌入式系统以及开发和测试过程中具有便利性。设计时需要考虑系统的特性和用户体验。

三、IO分配

优先分配特定外设IO,然后分配通用IO,最后微调
IO分配是嵌入式系统设计中的关键步骤,特别是在选择和配置微控制器的引脚时。在进行IO分配时,确保按照系统需求和优先级合理地分配引脚是非常重要的。以下是一个一般的IO分配优先级:

  1. 优先分配特定外设IO:

    • 首先,确定系统中需要连接的特定外设,如UART、SPI、I2C、定时器、PWM等。每个外设都需要特定的引脚来进行数据传输和控制。
    • 查阅目标外设的数据手册和引脚分配表,了解外设所需的引脚配置。
    • 优先选择符合特定外设需求的引脚,确保引脚分配满足外设的通信和控制要求。
  2. 然后分配通用IO:

    • 在分配了特定外设的引脚后,考虑通用IO的分配。
    • 通用IO通常用于连接一些普通的输入输出设备,如按键、LED、传感器等。
    • 确保通用IO的分配不与特定外设引脚冲突,并满足系统对输入输出设备的需求。
  3. 微调和冲突解决:

    • 在进行IO分配时,可能会出现一些冲突或者需要微调的情况。
    • 在进行微调时,考虑引脚之间的电气兼容性、信号干扰等因素。
    • 确保引脚的电气特性满足外设和系统的要求,避免电气冲突。
  4. 考虑布局和连接:

    • 考虑引脚的物理布局,确保连接引脚的路径短且清晰。
    • 对于需要连接到外部器件的引脚,考虑连接线的布局,以最小化电磁干扰和信号失真。
  5. 文档化和标记:

    • 在完成IO分配后,及时文档化引脚的用途和分配,以便后续开发人员能够快速理解引脚的功能。
    • 在原理图和PCB布局中清晰标记每个引脚的用途,确保布局和连接的正确性。

综合考虑这些因素,可以确保IO分配满足系统的需求,并且在后续开发和维护中能够更加方便。

四、总结

在这里插入图片描述

相关文章:

【正点原子STM32】STM32原理图设计(芯片手册和数据手册、常见引脚类型、最小系统和IO分配)

一、学会查看数据手册 获取芯片数据手册数据手册内容概要芯片的基本参数(STM32F103ZET6为例)正点原子开发板对应的主控型号和封装STM32F103ZET6引脚分布常见的STM32引脚类型下载接口 二、最小系统 电源电路复位电路BOOT启动电路晶振电路下载调试电路串…...

低代码自动化平台| 游戏规则改变者

自动化测试对于软件开发公司起着非常重要的作用。它在公司及其客户之间建立了对优质产品的信任。此外,它还使软件开发人员更加自信,因为他们可以在其他模块上工作,而不必担心应用程序的任何现有功能是否存在错误。在软件测试中融入自动化是必…...

【分享】MathWorks中国汽车年会:“软件定义汽车”

从软件赋能到软件定义,汽车行业不仅需要解决诸如错误发现滞后带来的高昂代价、功能融合所需的跨学科知识、功能安全与实施成本之间的权衡等老问题,也面临着新的挑战:软件复杂度的不断提升、利用数据驱动创造价值、人工智能的引入和实现、数字…...

RNN:Long Short-term Memory(中)

目录 1 LSTM 的简图 2 LSTM 的整体结构 2.1 结构图 2.2 流程图 3 举个例子 3.1 简单看看 3.2 代入 LSTM 4 Original Network v.s. LSTM 5 细看 LSTM 原视频:李宏毅 2020:Recurrent Neural Network (Part I) 1 LSTM 的简图 LSTM 实际…...

C# .NET读取Excel文件并将数据导出到DataTable、数据库及文本

Excel文件是存储表格数据的普遍格式,因此能够高效地读取和提取信息对于我们来说至关重要。C#语言借助.NET Framework和各种库的广泛功能,能够进行高效的数据操作。利用C#读取Excel文件并将数据写入数据库和DataTable,或者将数据用于其他目的&…...

移动云助力智慧交通数智化升级

智慧交通是在整个交通运输领域充分利用物联网、空间感知、云计算、移动互联网等新一代信息技术,综合运用交通科学、系统方法、人工智能、知识挖掘等理论与工具,以全面感知、深度融合、主动服务、科学决策为目标,推动交通运输更安全、更高效、…...

【Vue技巧】vue 阻止a链接跳转事件的两种方法

ChatGPT4.0国内站点&#xff0c;支持设计稿转代码&#xff1a;https://www.atalk-ai.com/ 在Vue中&#xff0c;如果你想阻止<a>链接的默认跳转事件&#xff0c;你可以使用click.prevent或者click配合.prevent修饰符。这样做可以阻止链接的默认行为&#xff0c;即不会跳转…...

006.Oracle事务处理

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…...

成功解决VScode进入到内置函数中调试

主要有两个关键步骤&#xff0c; 第一步 将launch.json中的"justMyCode"设为false 可通过使用ctrlshiftP搜索lauch.json找到次文件 如果找不到的话&#xff0c;可点击debug按钮&#xff0c;然后找到点击create a launch.json file创建 创建得到的launch.json如下&am…...

29、WEB攻防——通用漏洞SQL注入增删改查盲注延迟布尔报错

文章目录 盲注增删改查 盲注 概念&#xff1a;在注入过程中&#xff0c;获取的数据不能回显至前端页面&#xff0c;此时我们需要利用一些方法进行判断或尝试&#xff0c;这个过程被称为盲注。 解决&#xff1a;常规的联合查询注入不行的情况。 分类&#xff1a; 基于布尔的SQ…...

【设计模式 行为型】策略模式

它允许在运行时根据需要选择算法的行为。该模式通过将算法封装成独立的类&#xff0c;使得它们可以相互替换&#xff0c;而不影响使用算法的客户端代码。 策略模式主要包含以下角色&#xff1a; 环境&#xff08;Context&#xff09;&#xff1a;环境对象持有一个策略对象的引…...

JVM:双亲委派机制类加载器

JVM&#xff1a;双亲委派机制 1. 例子2. 类加载器总结3. 类加载过程4. 双亲委派模型的执行流程&#xff1a;5. 双亲委派模型的好处 1. 例子 Java运行时环境有一个java.lang包&#xff0c;里面有一个ClassLoader类 我们自定义一个String类在java.lang包下&#xff0c;下面的…...

从入门到精通:ThinkPHP6异步请求的全面解析!

在ThinkPHP6中使用异步请求 在Web应用程序的开发中&#xff0c;经常会需要使用异步请求。异步请求能够在后台执行而不干扰页面的其他操作&#xff0c;提高了用户的体验。而在ThinkPHP6框架中&#xff0c;也提供了方便的异步请求方式&#xff0c;本文将详细介绍如何在ThinkPHP6…...

C++写csv文件

C写csv文件 其中有一个点需要注意&#xff0c;csv芬里尔之间要用逗号隔开 p_str_filename "D:\\1.csv"; int writelog(string p_str_filename, double p_double[]) {SYSTEMTIME timeCur;GetLocalTime(&timeCur);char t_logbuffer[1024] { 0 };sprintf(t_logbu…...

将Matlab图窗中的可视化保存为背景透明的矢量图

将matlab绘制的结果复制为矢量图时&#xff0c;去除背景的操作如下&#xff1a; 先打开/绘制图形窗口(不要关闭)在命令行终端输入axis off关闭坐标系继续在命令行终端分别输入&#xff1a; ax gca; copygraphics(ax,ContentType,vector,BackgroundColor,none); 此时&#xff…...

希尔(Shell)排序

文章目录 希尔排序的基本思想本质增量&#xff08;间隔&#xff09;的选取 希尔排序的时间复杂度希尔排序代码实现希尔排序的稳定性 希尔排序的基本思想 将要排序的序列按一定间隔&#xff08;增量&#xff09;分组&#xff0c;将每一组的数据按插入排序进行排序&#xff0c;再…...

【已解决】Qt Creator设计模式被禁用不能点的原因及解决方案

Qt Creator 下载地址&#xff08;含历史版本&#xff09;&#xff1a;https://download.qt.io/official_releases/qtcreator/ 症状 Qt Creator 目前最新版为12.0.1&#xff0c;安装后打开.qml文件发现设计工具图标为禁用状态。 原因及解决方案 根据官网材料&#xff08;Qt C…...

树莓派5 Ubuntu 23.04 安装 DisplayLink 驱动

树莓派5 Ubuntu 23.04 安装 DisplayLink 驱动 PreparationSynaptics APT RepositoryInstall evdiInstall displaylink-driver Preparation lsusb -d 17e9: sudo apt-get install dkmsSynaptics APT Repository wget https://www.synaptics.com/sites/default/files/Ubuntu/po…...

SpringBoot 实现 PDF 添加水印有哪些方案

SpringBoot 实现 PDF 添加水印有哪些方案 方式一&#xff1a;使用 Apache PDFBox 库方式二&#xff1a;使用 iText 库方式三&#xff1a;用 Ghostscript 命令行方式四&#xff1a;Free Spire.PDF for Java方式五&#xff1a;Aspose.PDF for Java 简介 PDF&#xff08;Portable …...

【blender渲染】blender流体模拟基础

各位新年好哇&#xff0c;最近在做demo的时候&#xff0c;为了更好的效果&#xff0c;开始摸索一点离线渲染的东西。像这种后续渲染的处理&#xff0c;由于3ds max是更偏向于建模的dcc&#xff0c;有点不那么好使&#xff08;没有说看不起vray的意思哈&#xff09;。 像在实时…...

小白进阶之字符串处理

#include <cstdio> #include <cstring> int main() {char str[105];int count0,len0;scanf("%s",str);//输入字符lenstrlen(str);//求字符长for(int i0;i<len;i){if(str[i]A)//匹配计数count;}printf("%d",count); }#include <cstdio>…...

自定义Dubbo RPC通信协议

前言 Dubbo 协议层的核心SPI接口是org.apache.dubbo.rpc.Protocol&#xff0c;通过扩展该接口和围绕的相关接口&#xff0c;就可以让 Dubbo 使用我们自定义的协议来通信。默认的协议是 dubbo&#xff0c;本文提供一个 Grpc 协议的实现。 设计思路 Google 提供了 Java 的 Grpc…...

VB6.0报错:操作符AddressOf使用无效

VB调试&#xff0c;尝试调用DLL中的方法并带有回调函数&#xff0c;报错提示&#xff1a; 操作符AddressOf使用无效 代码&#xff1a; Private Sub btnScan_Click()... WCHBLEStartScanBLEDevices AddressOf callBackEnd Sub This function is called from the dll Public Fu…...

SpringCloud Aliba-Sentinel【中篇】-从入门到学废【5】

目录 1.流控规则 2. 熔断规则 3.热点规则 1.流控规则 1.资源名&#xff1a;唯一名称&#xff0c;默认请求路径 2.针对来源: Sentinel可以针对调用者进行限流,填写微服务名,默认default (不区分来源) 3.阈值类型/单机阈值&#xff1a; QPS&#xff08;每秒钟的请求数量&…...

四、基础篇 vue条件渲染

v-if v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。 <template><div class"content"><div v-if"show">show渲染了</div></div> </template><script> export de…...

广东金牌电缆:法大大电子合同助力业务风险管控

广东金牌电缆集团股份有限公司&#xff08;以下简称“广东金牌电缆”&#xff09;成立于2013年&#xff0c;现为广东省电线电缆重点生产企业、广东省守合同重信用单位、国家专精特新小巨人企业、国家高新技术企业&#xff0c;拥有自主商标“夺冠”&#xff0c;“夺冠”商标被评…...

机器学习周刊第五期:一个离谱的数据可视化Python库、可交互式动画学概率统计、机器学习最全文档、快速部署机器学习应用的开源项目、Redis 之父的最新文章

date: 2024/01/08 这个网站用可视化的方式讲解概率和统计基础知识,很多内容还是可交互的,非常生动形象。 大家好,欢迎收看第五期机器学习周刊 本期介绍7个内容,涉及Python、概率统计、机器学习、大模型等,目录如下: 一个离谱的Python库看见概率,看见统计2024机器学习最…...

vue和react的hooks

一、什么是hooks 直译“钩子”&#xff0c;在程序中代表&#xff0c;系统运行在某一时期时&#xff0c;会调用注册在该时机的回调函数。例如浏览器提供的onload或addEventListener能注册在浏览器各种时机调用的方法。 二、react中的hooks 一系列以“use”作为开发的方法&…...

2024.1.19

今天狠狠地复习了一下C语言&#xff0c;不复习不知道&#xff0c;一复习吓一跳昂&#xff0c;这感觉好多都忘却了&#xff0c;这并非一件好事&#xff0c;所以说还好复习了&#xff0c;不然考试就有点问题了&#xff0c;但是还好写一下这些代码就马上想起来了&#xff0c;所以说…...

上位机编程:CP56Time2a格式精讲

Cp56Time2a介绍&#xff1a; Cp56Time2a是西门子PLC&#xff08;可编程逻辑控制器&#xff09;中用于时间数据传输的一种特殊格式&#xff0c;主要用于PCS7和基于TCP/IP的S7通信过程中。这种时间格式主要为了确保在不同的系统和设备之间进行精确的时间同步。 Cp56Time2a格式&a…...