STM32外设应用知识详解

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:Java案例分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Unity中实现预制体自动巡逻与攻击敌人的完整实现指南

文章目录

    • 前言
      • 1、GPIO(通用输入输出)
      • 2、USART/UART(通用异步同步收发器)
      • 3、SPI(串行外设接口)
      • 4、I2C(Inter-Integrated Circuit)
      • 5、ADC/DAC(模数转换器/数模转换器)
      • 6、定时器/计数器
      • 7、中断控制器
      • 8、看门狗定时器(WDT)
    • 总结

在这里插入图片描述

前言

  STM32是一系列由意法半导体(STMicroelectronics)推出的32位ARM Cortex-M微控制器产品线。这些微控制器具有丰富的外设功能,可以广泛应用于各种嵌入式系统中。

  在现代嵌入式系统设计中,STM32系列微控制器由意法半导体(STMicroelectronics)推出,以其强大的32位ARM Cortex-M架构和丰富的外设功能而闻名。本文将深入探讨STM32微控制器的各种外设及其应用知识,包括GPIO、USART/UART、SPI、I2C、ADC/DAC、定时器/计数器、中断控制器和看门狗定时器等。通过对这些外设的详细解析,读者将能够更好地理解如何利用STM32微控制器构建高效、可靠的嵌入式系统。让我们一起深入探讨STM32外设的精彩世界,为嵌入式系统设计带来更多可能性和创新!

1、GPIO(通用输入输出)

  GPIO(通用输入输出)是STM32微控制器上最基本的外设之一,用于控制外部设备的输入和输出。GPIO引脚可以根据需要配置为输入模式或输出模式,以实现与外部设备的连接和通信。

定义:

  GPIO是一种通用的输入输出外设,可以通过配置控制寄存器来控制引脚的输入和输出状态。每个GPIO引脚都可以配置为输入模式(用于接收外部信号)或输出模式(用于向外部设备发送信号)。

特点:

  • 灵活性:GPIO引脚可以根据需要配置为输入或输出模式,具有很高的灵活性。
  • 多功能性:除了基本的输入输出功能,GPIO引脚还可以配置为其他功能,如模拟输入、复用功能等。
  • 可编程性:通过编程配置GPIO寄存器,可以实现对引脚的各种属性设置,如工作模式、速度、上拉/下拉等。

应用:

  • 控制外部设备:通过配置GPIO引脚为输出模式,可以控制外部LED、继电器、蜂鸣器等设备的开关状态。
  • 读取外部信号:通过配置GPIO引脚为输入模式,可以读取外部传感器、按钮等设备的状态。
  • 实现通信:GPIO引脚也可以用于实现简单的通信协议,如控制SPI或I2C总线的片选信号。

代码示例:

  下面是一个简单的代码示例,演示如何配置STM32的GPIO引脚为输出模式,并控制LED灯的开关状态:

#include "stm32f4xx.h"int main(void) {// 使能GPIOA时钟RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;// 配置GPIOA的第5号引脚为输出模式GPIOA->MODER |= GPIO_MODER_MODER5_0;while (1) {// 点亮LEDGPIOA->BSRR = GPIO_BSRR_BS5;// 延时一段时间for (int i = 0; i < 1000000; i++);// 熄灭LEDGPIOA->BSRR = GPIO_BSRR_BR5;// 延时一段时间for (int i = 0; i < 1000000; i++);}
}

  在这个示例中,我们使能了GPIOA的时钟,将第5号引脚配置为输出模式,然后循环中控制LED灯的开关状态,实现LED的闪烁效果。

2、USART/UART(通用异步同步收发器)

  USART(通用同步异步收发器)和UART(通用异步收发器)是STM32微控制器中常见的串行通信外设,用于与其他设备进行数据传输。

定义:

  • USART:USART是通用同步异步收发器,支持同步和异步通信模式。它可以实现高速数据传输,并具有更多的配置选项,如时钟极性、数据位数、停止位数等。
  • UART:UART是通用异步收发器,仅支持异步通信模式。它相对简单,适用于一些基本的串行通信需求。

特点:

  • USART:
    • 支持同步和异步通信模式,适用于不同的通信需求。
    • 可以配置更多的参数,如波特率、数据位数、停止位数等,具有更高的灵活性。
    • 适用于高速数据传输,如音频、视频等应用场景。
  • UART:
    • 仅支持异步通信模式,相对简单,适用于一些基本的串行通信需求。
    • 配置相对简单,适合一些对通信速度要求不高的场景。

应用:

  • USART:
    • 适用于需要高速数据传输和复杂通信协议的场景,如与传感器、显示器、无线模块等设备的通信。
    • 可用于实现多种通信协议,如SPI、I2C等。
  • UART:
    • 适用于一些简单的串行通信需求,如与GPS模块、蓝牙模块等设备的通信。
    • 在一些对通信速度要求不高的场景下,UART也可以满足需求。

代码示例:

  下面是一个简单的代码示例,演示如何配置STM32的USART外设进行串行通信:

#include "stm32f4xx.h"int main(void) {// 使能USART2时钟RCC->APB1ENR |= RCC_APB1ENR_USART2EN;// 配置USART2引脚GPIOA->AFR[0] |= 0x0700; // 配置引脚为USART2的复用功能GPIOA->MODER |= GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1; // 配置引脚为复用模式// 配置USART2USART2->BRR = 0x1117; // 波特率设置为9600USART2->CR1 |= USART_CR1_TE | USART_CR1_RE | USART_CR1_UE; // 使能发送和接收while (1) {// 发送数据while (!(USART2->SR & USART_SR_TXE)); // 等待发送缓冲区为空USART2->DR = 'A'; // 发送字符'A'// 接收数据while (!(USART2->SR & USART_SR_RXNE)); // 等待接收缓冲区非空char received_data = USART2->DR; // 读取接收到的数据}
}

3、SPI(串行外设接口)

  SPI(串行外设接口)是STM32微控制器中常见的串行通信外设,用于高速全双工的串行通信,适用于连接外部存储器、传感器、显示器等设备。SPI具有主从模式和多主模式,可以实现高效的数据传输。

定义:

   SPI是一种串行通信协议,用于在设备之间进行高速全双工的数据传输。SPI通常由一个主设备和一个或多个从设备组成,通过时钟信号同步数据传输。

特点:

  • 高速全双工通信:SPI支持高速的全双工通信,可以实现同时发送和接收数据。
  • 灵活的主从模式:SPI可以工作在主模式或从模式,主设备控制通信时序,从设备响应数据传输。
  • 多主模式:SPI还支持多主模式,多个主设备可以共享同一个总线,通过片选信号选择通信对象。

应用:

  • 连接外部存储器:SPI可以连接外部存储器,如EEPROM、Flash存储器等,实现数据的读写操作。
  • 连接传感器:SPI常用于连接各种传感器,如加速度计、陀螺仪等,实现数据采集和传输。
  • 连接显示器:SPI也常用于连接各种显示器,如LCD显示屏、OLED屏幕等,实现图形显示和数据传输。

代码示例:

  下面是一个简单的代码示例,演示如何配置STM32的SPI外设进行数据传输:

#include "stm32f4xx.h"int main(void) {// 使能SPI1时钟RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;// 配置SPI1引脚GPIOA->AFR[0] |= 0x55500000; // 配置引脚为SPI1的复用功能GPIOA->MODER |= GPIO_MODER_MODER5_1 | GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1; // 配置引脚为复用模式// 配置SPI1SPI1->CR1 |= SPI_CR1_BR_0 | SPI_CR1_BR_1; // 设置波特率分频为 fPCLK/32SPI1->CR1 |= SPI_CR1_MSTR; // 设置为主模式SPI1->CR1 |= SPI_CR1_SSI | SPI_CR1_SSM; // 禁用软件从模式管理SPI1->CR1 |= SPI_CR1_SPE; // 使能SPI1while (1) {// 发送数据while (!(SPI1->SR & SPI_SR_TXE)); // 等待发送缓冲区为空SPI1->DR = 0x55; // 发送数据0x55// 接收数据while (!(SPI1->SR & SPI_SR_RXNE)); // 等待接收缓冲区非空uint8_t received_data = SPI1->DR; // 读取接收到的数据}
}

4、I2C(Inter-Integrated Circuit)

  I2C(Inter-Integrated Circuit)是一种常见的串行通信协议,适用于连接多个设备到同一总线上,实现设备之间的数据传输和通信。I2C具有多主模式和多从模式,适用于连接各种外部设备。

定义:

  I2C是一种双线制的串行通信协议,包括时钟线(SCL)和数据线(SDA)。通过SCL线上的时钟信号同步数据传输,SDA线上的数据线用于发送和接收数据。I2C总线上可以连接多个主设备和多个从设备。

特点:

  • 双线制通信:I2C使用双线制(时钟线和数据线)进行通信,简化了硬件连接。
  • 多主模式:I2C支持多主模式,多个主设备可以共享同一个总线,通过地址冲突解决机制实现通信。
  • 多从模式:I2C也支持多从模式,多个从设备可以在同一总线上与主设备通信。

应用:

  • 连接传感器:I2C常用于连接各种传感器,如温度传感器、湿度传感器等,实现数据采集和传输。
  • 连接显示器:I2C也常用于连接各种显示器,如LCD显示屏、OLED屏幕等,实现图形显示和数据传输。
  • 连接外部存储器:I2C可以连接外部存储器,如EEPROM、SRAM等,实现数据的读写操作。

代码示例:

  下面是一个简单的代码示例,演示如何配置STM32的I2C外设进行数据传输:

#include "stm32f4xx.h"int main(void) {// 使能I2C1时钟RCC->APB1ENR |= RCC_APB1ENR_I2C1EN;// 配置I2C1引脚GPIOB->AFR[0] |= 0x44000000; // 配置引脚为I2C1的复用功能GPIOB->MODER |= GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1; // 配置引脚为复用模式// 配置I2C1I2C1->CR2 |= 42; // 设置时钟频率为42MHzI2C1->CCR |= 210; // 设置时钟控制寄存器I2C1->TRISE |= 43; // 设置上升时间I2C1->CR1 |= I2C_CR1_PE; // 使能I2C1while (1) {// 发送数据I2C1->CR1 |= I2C_CR1_START; // 发送起始信号while (!(I2C1->SR1 & I2C_SR1_SB)); // 等待起始信号发送完成I2C1->DR = 0xA0; // 发送从设备地址// 接收数据while (!(I2C1->SR1 & I2C_SR1_ADDR)); // 等待地址发送完成I2C1->SR2; // 清除标志位while (!(I2C1->SR1 & I2C_SR1_RXNE)); // 等待接收缓冲区非空uint8_t received_data = I2C1->DR; // 读取接收到的数据}
}

5、ADC/DAC(模数转换器/数模转换器)

  ADC(模数转换器)和DAC(数模转换器)是用于模拟信号和数字信号之间的转换的重要外设。ADC用于将模拟信号转换为数字信号,而DAC用于将数字信号转换为模拟信号。它们在各种应用中起着关键作用,如传感器数据采集、音频处理、控制模拟设备等。

定义:

  • ADC:ADC是模数转换器,用于将模拟信号转换为数字信号。它通过采样和量化模拟信号,将其转换为数字形式,以便微控制器或处理器进行处理。
  • DAC:DAC是数模转换器,用于将数字信号转换为模拟信号。它通过将数字信号转换为模拟电压或电流输出,控制模拟设备的行为。

特点:

  • ADC:
    • 采样精度:ADC的采样精度决定了转换后数字信号的精度,通常以位数(比特)表示。
    • 采样速率:ADC的采样速率表示每秒采样的次数,影响信号的准确性和响应速度。
    • 输入范围:ADC能够转换的模拟信号的电压范围。
  • DAC:
    • 分辨率:DAC的分辨率表示数字信号转换为模拟信号时的精度,通常以位数(比特)表示。
    • 输出范围:DAC能够输出的模拟信号的电压范围。
    • 更新速率:DAC的更新速率表示输出信号的变化速度,影响模拟设备的响应速度。

应用:

  • ADC:
    • 传感器数据采集:ADC常用于采集传感器产生的模拟信号,如温度传感器、光线传感器等。
    • 音频处理:ADC用于将声音信号转换为数字形式,进行音频处理和录音。
    • 控制系统:ADC用于采集控制系统中的模拟信号,实现对系统的监控和控制。
  • DAC:
    • 音频输出:DAC常用于音频设备中,将数字音频信号转换为模拟音频信号输出到扬声器。
    • 波形生成:DAC可以用于生成各种波形信号,如正弦波、方波等,用于测试和实验。
    • 控制模拟设备:DAC可以用于控制模拟设备的输出,如调节电压、控制电机等。

代码示例:

  下面是一个简单的代码示例,演示如何配置STM32的ADC和DAC外设进行模拟信号的采集和输出:

// 配置ADC
ADC1->CR2 |= ADC_CR2_ADON; // 使能ADC
ADC1->SQR3 |= 0; // 选择通道0
ADC1->CR2 |= ADC_CR2_SWSTART; // 启动转换
while (!(ADC1->SR & ADC_SR_EOC)); // 等待转换完成
uint16_t adc_value = ADC1->DR; // 读取转换结果// 配置DAC
DAC->CR |= DAC_CR_EN1; // 使能DAC通道1
DAC->DHR12R1 = 2048; // 设置DAC输出值为一半

6、定时器/计数器

  定时器和计数器是STM32微控制器中常见的外设,用于生成精确的时间延迟、PWM信号输出、定时中断等功能。

定义:

  • 定时器:定时器是用于生成精确时间延迟的外设,可以在特定时间间隔内触发事件或执行特定操作。
  • 计数器:计数器是用于计数脉冲或时钟周期的外设,可以用于测量时间间隔或频率等。

特点:

  • 定时器:
    • 多功能性:定时器可以用于生成延时、PWM信号、定时中断等多种功能。
    • 灵活性:定时器通常具有多个计数通道和工作模式,可以根据需求进行配置。
    • 精确性:定时器可以提供高精度的时间控制,适用于需要精确时间控制的应用。
  • 计数器:
    • 计数功能:计数器用于计数输入脉冲或时钟周期,可以测量时间间隔或频率。
    • 多种计数模式:计数器通常支持不同的计数模式,如上升沿计数、下降沿计数等。
    • 可编程性:计数器的计数范围和计数速率通常是可编程的,可以根据需求进行调整。

应用:

  • 定时器:
    • 延时生成:定时器常用于生成精确的延时,控制各种设备的动作和时序。
    • PWM信号输出:定时器可以生成PWM信号,用于控制电机速度、LED亮度等。
    • 定时中断:定时器可以用于生成定时中断,实现周期性任务的执行。
  • 计数器:
    • 频率测量:计数器可以用于测量输入信号的频率,如测量脉冲信号的频率。
    • 脉冲计数:计数器可以用于计数输入脉冲的数量,如计数传感器触发的脉冲数量。
    • 时间测量:计数器可以用于测量时间间隔,如测量两个事件之间的时间差。

代码示例:

  下面是一个简单的代码示例,演示如何配置STM32的定时器和计数器外设进行定时中断和频率测量:

// 配置定时器
TIM2->PSC = 999; // 设置预分频值,时钟频率为84MHz,计数频率为84kHz
TIM2->ARR = 999; // 设置自动重装载寄存器值,计数周期为1s
TIM2->CR1 |= TIM_CR1_CEN; // 使能定时器// 配置计数器
TIM3->SMCR |= TIM_SMCR_SMS_2; // 选择外部时钟模式
TIM3->CCMR1 |= TIM_CCMR1_CC1S_0; // 选择输入通道1
TIM3->CCER |= TIM_CCER_CC1P; // 上升沿计数
TIM3->CR1 |= TIM_CR1_CEN; // 使能计数器

7、中断控制器

  中断控制器是微控制器中的重要外设,用于管理和响应各种中断事件,以提高系统的实时性和响应能力。

定义:

  中断控制器是用于管理和响应系统中断的外设,它可以监视各种中断源(如定时器、外部IO、通信接口等),并在中断事件发生时及时响应,执行相应的中断服务程序。

特点:

  • 实时性:中断控制器能够及时响应各种中断事件,提高系统的实时性。
  • 灵活性:中断控制器通常具有多个中断优先级和中断向量,可以根据需求对中断进行优先级排序和处理。
  • 可编程性:中断控制器的中断向量和中断服务程序通常是可编程的,可以根据具体应用进行定制。

应用:

  • 系统实时性:中断控制器可以用于提高系统的实时性,及时响应各种事件并执行相应的处理程序。
  • 外部设备控制:中断控制器可以用于管理外部设备的中断请求,如外部IO口、定时器、串口等。
  • 多任务处理:中断控制器可以实现多任务处理,通过中断服务程序的切换实现多任务并发执行。

代码示例:

  下面是一个简单的代码示例,演示如何配置STM32的中断控制器进行中断处理:

// 配置外部中断
EXTI->IMR |= EXTI_IMR_MR0; // 使能外部中断线0
EXTI->RTSR |= EXTI_RTSR_TR0; // 设置外部中断线0为上升沿触发
NVIC_EnableIRQ(EXTI0_IRQn); // 使能外部中断线0的中断// 中断服务程序
void EXTI0_IRQHandler(void) {if (EXTI->PR & EXTI_PR_PR0) { // 检查中断标志位// 执行中断处理程序// 清除中断标志位EXTI->PR |= EXTI_PR_PR0;}
}

8、看门狗定时器(WDT)

  看门狗定时器(WDT)是一种用于监视系统运行状态的特殊定时器,当系统出现死锁或异常情况时,可以重启系统以恢复正常运行。

定义:

  看门狗定时器是一种硬件定时器,用于监视系统的运行状态。系统在正常运行时会定期喂狗(即重置定时器),如果系统出现死锁或异常情况导致无法喂狗,看门狗定时器会超时并触发系统重启,以恢复系统的正常运行。

特点:

  • 监视功能:看门狗定时器可以监视系统的运行状态,防止系统死锁或异常情况导致系统停止响应。
  • 自动重启:当看门狗定时器超时时,会自动触发系统重启,帮助系统恢复正常运行。
  • 硬件实现:看门狗定时器通常是硬件实现的,不受软件控制的影响,可以提高系统的可靠性。

应用:

  • 系统稳定性:看门狗定时器常用于提高系统的稳定性,防止系统因软件bug或其他原因导致死锁或停止响应。
  • 嵌入式系统:在嵌入式系统中,看门狗定时器可以用于监视系统运行状态,确保系统的可靠性和稳定性。
  • 自动恢复:看门狗定时器可以帮助系统在出现异常情况时自动重启,恢复到正常运行状态。

代码示例:

  下面是一个简单的代码示例,演示如何配置STM32的看门狗定时器进行系统监视:

// 配置看门狗定时器
IWDG->KR = 0x5555; // 解锁看门狗寄存器
IWDG->PR = 0x06; // 设置预分频值,看门狗定时器时钟为40kHz
IWDG->RLR = 1000; // 设置重装载寄存器值,定时器溢出时间为25s
IWDG->KR = 0xAAAA; // 重新加载看门狗计数器
IWDG->KR = 0xCCCC; // 使能看门狗定时器// 喂狗操作
IWDG->KR = 0xAAAA; // 重新加载看门狗计数器

总结

  在嵌入式系统开发中,定时器/计数器、中断控制器和看门狗定时器是至关重要的外设,它们为系统提供了关键的时间控制、事件响应和系统监视功能。定时器和计数器是用于生成精确时间延迟、PWM信号输出等的多功能外设。通过定时器,开发人员可以实现精确的时间控制,例如在通信协议中生成特定的时间间隔、控制外设的操作时序等。同时,定时器还可以用于生成PWM信号,用于控制电机速度、LED亮度等。

  中断控制器是用于管理和响应系统中断的外设,可以提高系统的实时性和响应能力。通过中断控制器,系统可以及时响应各种中断事件,执行相应的中断服务程序,从而实现多任务处理、外部设备控制等功能。中断控制器的灵活性和可编程性使其成为嵌入式系统中不可或缺的一部分。

  看门狗定时器是一种特殊的定时器,用于监视系统的运行状态。当系统出现死锁或异常情况时,看门狗定时器可以自动重启系统,确保系统的稳定性和可靠性。看门狗定时器在嵌入式系统中扮演着重要角色,可以防止系统因软件bug或其他原因导致系统停止响应。

  合理配置和使用定时器/计数器、中断控制器和看门狗定时器可以有效提升嵌入式系统的性能和稳定性,为各种应用场景提供强大的支持。开发人员应根据具体需求和系统特点,灵活运用这些外设,以实现系统的高效运行和可靠性保障。通过深入理解和合理应用这些外设,嵌入式系统开发可以更加顺利和高效。

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

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

相关文章

RKMEDIA画面质量调节-QP调节

QP是在视频采集编码过程中的量化参数&#xff0c;其值与画面质量成反比&#xff0c;即QP值越大画面质量越小&#xff0c;其具体调整方法如下&#xff1a; typedef struct rkVENC_RC_PARAM_S {RK_U32 u32ThrdI[RC_TEXTURE_THR_SIZE]; // [0, 255]RK_U32 u32ThrdP[RC_TEXTURE_TH…

如何基于 RLHF 来优化 ChatGPT 类型的大语言模型

&#x1f6b4;前言 对于ChatGPT来说&#xff0c;RLHF是其训练的核心。所谓RLHF&#xff0c;即Reinforcement Learning with Human Feedback&#xff0c;基于人类反馈的强化学习。这项技术通过结合模型自身的生成能力和人类专家的反馈&#xff0c;为改进文本生成质量提供了新的…

解决Android Studio中使用lombok插件错误: 找不到符号的问题

问题 主要是想节省实体类的set、get等方法&#xff0c;使用lombok报错如下&#xff1a; 解决方案 由于Android的限制&#xff0c;在Android中使用lombok兼容极其麻烦&#xff0c;如果你只是想减少set、get等代码可以直接使用kotlin的data class 示例 data class KotlinTes…

等级保护等保资料原件合集(word源资料)

第二章 系统定级与安全域 2.1 系统定级 2.1.1 不同等级的安全保护能力 2.1.2 重要信息系统 2.1.3 定级参考 2.2 安全域定义 2.2.1 安全域定义方法 2.2.2 安全域等级描述 第三章 实施方案设计 3.1 三级等保要求 3.2 基本要求的详细技术要求 3.2.1 物理安全 3.2.2 网…

Unity 从零开始的框架搭建1-1 unity中对象调用的三种方式的优缺点分析【干货】

该文章专栏是向QFrameWork作者凉鞋老师学习总结得来&#xff0c;吃水不忘打井人&#xff0c;不胜感激 Unity 框架搭建学习笔记1-1&#xff0c;前一个1代表凉鞋的第一季教程&#xff0c;后一个1代表该季第一篇我的文章 unity中对象调用的三种方式 方法调用&#xff0c;例如&…

Qt设计登录界面

优化登录框&#xff1a; 将两个按钮连接到槽函数 在构造函数中定义 connect(this->btn1,&QPushButton::clicked,this,&Logon::my_slot);connect(this->btn2,&QPushButton::clicked,this,&Logon::my_cancel); 定义登录按钮连接的槽函数 void Logon::my…

基于Java语言的充电桩平台+云快充协议+充电桩管理后台+充电桩小程序

软件架构 1、提供云快充底层桩直连协议&#xff0c;版本为云快充1.5&#xff0c;对于没有对接过充电桩系统的开发者尤为合适&#xff1b; 2、包含&#xff1a;启动充电、结束充电、充电中实时数据获取、报文解析、Netty通讯框架、包解析工具、调试器模拟器软件等&#xff1b;…

CMake 属性之目标属性

【写在前面】 CMake 可以通过属性来存储信息。它就像是一个变量&#xff0c;但它被附加到一些其他的实体上&#xff0c;像是一个目录或者是一个目标。例如一个全局的属性可以是一个有用的非缓存的全局变量。 在 CMake 的众多属性中&#xff0c;目标属性 ( Target Properties ) …

NodeJS智慧社区管理微信小程序-计算机毕业设计源码40623

摘 要 随着中国经济的飞速增长&#xff0c;消费者的智能化水平不断提高&#xff0c;许多智能手机和相关的软件正在得到更多的关注和支持。其中&#xff0c;智慧社区管理微信小程序更是深得社区人员的喜爱&#xff0c;它的出现极大地改善了社区人员的生活质量&#xff0c;同时&…

宠物咖啡馆在线体验:SpringBoot框架的创新应用

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

云微客AI直播矩阵,让小白轻松上手的必备直播利器

现在直播带货都已经杀疯了&#xff0c;在新趋势下&#xff0c;AI智能直播应运而生。AI智能直播相较于传统直播&#xff0c;直播模式对于场地的要求和人员的要求都相对较低&#xff0c;大大降低了我们的试错成本&#xff0c;同时直播矩阵系统也为企业和个人带来了低成本、高效率…

浅析基于双碳目标的光储充一体化电站状态评估技术

摘要&#xff1a;全国碳市场拉开了我国能源结构加速转型的大幕&#xff0c;催生了光伏、储能和新能源汽车等一批绿色产业的兴起&#xff0c;同时随着利好政策扶植和消费者的青睐&#xff0c;光伏、储能和新能源汽车市场均加快发展。但传统的充电桩和光伏电站都是分开建设&#…

如何在电脑上创建虚拟网卡

1.右键点击此电脑&#xff0c;选择——管理 2.选择设备管理器——网络适配器&#xff0c;在点击操作选择 添加过时硬件 3.点击 下一页 4.在这里选择网络适配器&#xff0c;点击下一页 5.选择微软的环回适配器 6.打开控制面板 7.点击网络和Internet 8.点击网络和共享中心 9…

一个读取CT图像序列,并进行表面重建的C++代码

这篇文章中&#xff0c;介绍使用VTK进行读取CT图像&#xff08;一个序列&#xff09;&#xff0c;然后进行表面重建。为什么不使用DCMTK呢&#xff1f;因为使用DCMTK需要一张一张读取&#xff0c;要自己写一个代码&#xff0c;还要创建一个容器来放读入的CT数据&#xff0c;比较…

亳州自闭症寄宿制学校,关注孩子的学习和生活

在特殊教育领域&#xff0c;自闭症儿童的教育与成长一直是社会各界关注的焦点。近年来&#xff0c;随着对自闭症认识的加深&#xff0c;越来越多的寄宿制学校应运而生&#xff0c;致力于为这些特殊的孩子提供全面、个性化的教育服务。在安徽亳州&#xff0c;这样的学校正努力为…

Metasploit渗透测试之后渗透

简介 Metasploit拥有300多个后渗透模块&#xff0c;是渗透测试的最佳框架之一&#xff0c;覆盖了从信息收集到后渗透甚至报告的每个阶段。本章将重点介绍提权、持久化、获取凭证和横向移动等内容。 # 1、后渗透模块 在Metasploit框架升级后&#xff0c;用于自动化后渗透任务…

C++——类和对象(二)

1. 类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。⼀个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前4个&#xff0c;最后两个取地址重载不…

某国有资本运营中心人才选拔项目纪实

某国有资本运营中心人才选拔项目纪实 【客户行业】 政府与事业单位 【问题类型】 人才招聘选拔 【客户背景】 在三年国企改革过程中&#xff0c;南方某省政府为响应国家政策&#xff0c;提出组建专业化国有资本投资运营公司&#xff0c;大力开展专业化资本运营&#xff0c;…

移除元素(算法题分享)

移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下操作&#xf…

MySQL从0到1基础语法笔记(上)

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;Java Web关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 MySQL笔记&#xff1a; 一、注释&#xff1a; 二、SQL四大类&#xff…