基于阿里云MQTT服务,设计一个STM32的智能光伏控制系统

摘要

这篇文章详细介绍了利用STM32F103C8T6单片机实现光伏发电系统的关键技术。全文分为四章:第一章阐述了光伏发电的背景、意义及应用场景,强调其在绿色能源领域的重要性。第二章介绍了如何通过STM32F103C8T6及光敏电阻和伺服电机实现光线追踪系统,详细描述了硬件选择、连接及使用HAL库编写的单片机程序。第三章讲解了最大功率点追踪(MPPT)的原理,并展示了如何利用STM32F103C8T6和相关传感器、DC-DC转换器实现MPPT功能。第四章描述了如何通过STM32F103C8T6与SIM7600CE 4G模块连接到阿里云MQTT服务,实现设备状态数据的远程传输和控制。本文提供了全面的硬件连接和程序代码示例,为构建高效的光伏发电系统提供了实用指导。

第一章:光伏发电背景、意义及应用场景

1.1 光伏发电的背景

光伏发电(Photovoltaic Power Generation,简称PV)是一种利用光伏效应将太阳能直接转换为电能的技术。随着全球能源需求的不断增长和环境问题的日益严重,寻找清洁、可再生的能源成为人类社会的迫切需求。光伏发电作为一种绿色环保的能源形式,具有重要的战略意义。

光伏发电的历史可以追溯到19世纪,当时法国物理学家Edmond Becquerel首次发现了光电效应。然而,真正意义上的光伏发电技术直到1954年贝尔实验室发明了第一块实用的硅太阳能电池后才开始发展。进入21世纪,光伏技术取得了飞速的发展,光伏电池的效率不断提升,成本逐步下降,使得光伏发电在全球范围内得到广泛应用。

1.2 光伏发电的意义
  1. 环保效益:光伏发电过程不会产生任何污染物,也不会排放温室气体,对环境友好,符合可持续发展的理念。

  2. 能源安全:太阳能资源丰富且分布广泛,不受地理和资源的限制,利用光伏发电可以减少对化石能源的依赖,增强能源安全性。

  3. 经济效益:随着光伏技术的进步和规模化生产,光伏发电的成本逐年降低,已经在许多地区达到了平价上网的水平,具有显著的经济效益。

  4. 社会效益:光伏发电可以促进就业,推动相关产业链的发展,带动经济增长。

1.3 光伏发电的应用场景

光伏发电应用场景广泛,主要包括以下几个方面:

  1. 住宅和商业建筑:在建筑物的屋顶和外墙安装光伏发电系统,可以为建筑物提供清洁能源,降低用电成本。

  2. 光伏电站:大规模光伏电站通常建在荒漠、戈壁等地,利用广阔的土地资源,进行大规模的太阳能发电。

  3. 交通领域:太阳能汽车、太阳能飞机、太阳能船舶等交通工具利用光伏技术,实现清洁能源驱动。

  4. 农业与牧业:在农业生产中,利用光伏系统为灌溉、农产品加工等提供电力;在牧业中,光伏发电可以为偏远地区提供稳定的电力供应。

  5. 偏远地区电力供应:在电网难以覆盖的偏远地区,光伏发电系统可以作为独立电源,为当地居民提供电力。

  6. 公共设施:城市中的路灯、信号灯、监控设备等公共设施可以利用光伏发电,降低能源消耗,提高能源利用效率。


第二章:利用STM32F103实现光线追踪

2.1 光线追踪的概述

光线追踪是光伏发电系统中常见的一种技术,通过实时调整光伏面板的角度,使其始终保持在最佳的光照角度,从而最大限度地提高光伏系统的发电效率。光线追踪系统一般由光传感器、伺服电机、控制器等组成,其中控制器通常采用单片机实现。

2.2 硬件选择

在本项目中,我们选择使用STM32F103C8T6单片机作为控制核心,结合光传感器和伺服电机,实现光线追踪功能。

  • STM32F103C8T6单片机:STM32F103系列单片机具有高性能、低功耗的特点,内置丰富的外设接口,非常适合用于控制类应用。
  • 光传感器:使用4个光敏电阻(如GL5528)放置在十字交叉形状,以检测光线方向。
  • 伺服电机:选择带有PWM控制接口的MG995伺服电机,用于调整光伏面板的角度。
  • 其他组件:包括电源模块(如5V DC电源模块)、连接线、支架等。
2.3 硬件连接
  1. 光传感器连接

    • 光敏电阻1(LDR1)连接到ADC通道1(PA0)。
    • 光敏电阻2(LDR2)连接到ADC通道2(PA1)。
    • 光敏电阻3(LDR3)连接到ADC通道3(PA2)。
    • 光敏电阻4(LDR4)连接到ADC通道4(PA3)。
  2. 伺服电机连接

    • MG995伺服电机的控制信号连接到STM32F103的PWM输出(PA8)。
    • 伺服电机的电源(VCC)连接到5V电源,地(GND)连接到系统地。
2.4 系统架构

光线追踪系统的整体架构如下:

  1. 光传感器模块:检测太阳光的方向和强度,将信号传输给STM32F103。
  2. STM32F103控制器:处理光传感器传来的信号,根据光线方向计算出最佳的面板角度,输出控制信号给伺服电机。
  3. 伺服电机模块:接收STM32F103的控制信号,驱动光伏面板进行角度调整。
2.5 单片机程序设计

利用STM32F103实现光线追踪的单片机程序主要包括以下几个部分:

  1. 初始化:初始化外设接口,包括ADC、PWM、GPIO等。
  2. 光传感器数据采集:通过ADC接口读取光传感器的数据,分析太阳光的方向。
  3. 计算最佳角度:根据光传感器的数据,计算出光伏面板的最佳角度。
  4. 控制伺服电机:通过PWM接口控制伺服电机,调整光伏面板的角度。
  5. 实时更新:持续采集光传感器的数据,实时调整光伏面板的角度。

以下是具体的程序代码示例:

c 复制代码
#include "stm32f1xx_hal.h"

// ADC句柄
ADC_HandleTypeDef hadc1;
ADC_HandleTypeDef hadc2;
ADC_HandleTypeDef hadc3;
ADC_HandleTypeDef hadc4;

// 定时器句柄
TIM_HandleTypeDef htim1;

// 初始化ADC
void MX_ADC1_Init(void) {
    __HAL_RCC_ADC1_CLK_ENABLE();
    hadc1.Instance = ADC1;
    hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
    hadc1.Init.ContinuousConvMode = DISABLE;
    hadc1.Init.DiscontinuousConvMode = DISABLE;
    hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
    hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    hadc1.Init.NbrOfConversion = 1;
    HAL_ADC_Init(&hadc1);
}

// 初始化定时器,用于PWM
void MX_TIM1_Init(void) {
    __HAL_RCC_TIM1_CLK_ENABLE();
    htim1.Instance = TIM1;
    htim1.Init.Prescaler = 72 - 1;
    htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
    htim1.Init.Period = 20000 - 1;
    htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    htim1.Init.RepetitionCounter = 0;
    HAL_TIM_PWM_Init(&htim1);

    TIM_OC_InitTypeDef sConfigOC;
    sConfigOC.OCMode = TIM_OCMODE_PWM1;
    sConfigOC.Pulse = 1500; // 初始化占空比
    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
    sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
    sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
    sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
    sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
    HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
}

// 设置PWM占空比
void Set_Servo_Angle(uint16_t angle) {
    uint16_t pulse_length = (angle * 2000 / 180) + 1000;
    __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pulse_length);
}

// 初始化所有ADC
void Init_ADC() {
    MX_ADC1_Init();
    MX_ADC2_Init();
    MX_ADC3_Init();
    MX_ADC4_Init();
}

// 读取ADC值
uint32_t Read_ADC_Value(ADC_HandleTypeDef* hadc) {
    HAL_ADC_Start(hadc);
    HAL_ADC_PollForConversion(hadc, HAL_MAX_DELAY);
    uint32_t value = HAL_ADC_GetValue(hadc);
    HAL

_ADC_Stop(hadc);
    return value;
}

int main(void) {
    HAL_Init();
    Init_ADC();
    MX_TIM1_Init();

    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

    while (1) {
        // 读取光传感器数据
        uint32_t adc_value1 = Read_ADC_Value(&hadc1);
        uint32_t adc_value2 = Read_ADC_Value(&hadc2);
        uint32_t adc_value3 = Read_ADC_Value(&hadc3);
        uint32_t adc_value4 = Read_ADC_Value(&hadc4);

        // 根据光传感器数据计算最佳角度
        uint16_t angle = Calculate_Best_Angle(adc_value1, adc_value2, adc_value3, adc_value4);

        // 设置伺服电机角度
        Set_Servo_Angle(angle);

        HAL_Delay(1000);
    }
}

// 计算最佳角度的函数(根据光敏电阻的读数)
uint16_t Calculate_Best_Angle(uint32_t val1, uint32_t val2, uint32_t val3, uint32_t val4) {
    // 简单的光线追踪算法:选择光强较高的一侧进行调整
    if (val1 > val2 && val1 > val3 && val1 > val4) {
        return 0;  // 朝向LDR1的方向
    } else if (val2 > val1 && val2 > val3 && val2 > val4) {
        return 90; // 朝向LDR2的方向
    } else if (val3 > val1 && val3 > val2 && val3 > val4) {
        return 180; // 朝向LDR3的方向
    } else {
        return 270; // 朝向LDR4的方向
    }
}

以上代码展示了如何初始化ADC和PWM接口,读取光传感器数据,计算最佳角度,并通过PWM信号控制伺服电机调整光伏面板角度。


第三章:利用STM32F103实现MPPT

3.1 MPPT概述

最大功率点追踪(Maximum Power Point Tracking,MPPT)是一种优化技术,用于在不同的光照强度和温度条件下,使光伏电池始终工作在最大功率点,以最大化其输出功率。MPPT算法通过实时调节负载,使光伏电池输出电压和电流维持在最佳值,从而提高系统的整体效率。

3.2 硬件选择

在本项目中,利用STM32F103C8T6单片机实现MPPT功能,主要硬件包括:

  • STM32F103C8T6单片机:作为MPPT算法的控制核心。
  • 光伏电池板:提供光伏发电的能源来源。
  • 电压传感器:使用电压传感器(如ZMPT101B)用于实时监测光伏电池的输出电压。
  • 电流传感器:使用电流传感器(如ACS712)用于实时监测光伏电池的输出电流。
  • DC-DC转换器:使用降压型DC-DC转换器模块(如LM2596)实现电压转换和功率调节。
  • 其他组件:包括电源模块(如5V DC电源模块)、连接线等。
3.3 硬件连接
  1. 电压传感器连接

    • ZMPT101B电压传感器输出连接到ADC通道1(PA0)。
  2. 电流传感器连接

    • ACS712电流传感器输出连接到ADC通道2(PA1)。
  3. DC-DC转换器连接

    • 输入端连接到光伏电池板的输出。
    • 输出端连接到负载。
    • 调节端(EN或ADJ)连接到STM32F103的PWM输出(PA8)。
3.4 系统架构

MPPT系统的整体架构如下:

  1. 光伏电池板:提供输入电能。
  2. 电压和电流传感器:检测光伏电池的输出电压和电流,将信号传输给STM32F103。
  3. STM32F103控制器:根据传感器数据,运行MPPT算法,输出控制信号给DC-DC转换器。
  4. DC-DC转换器:根据STM32F103的控制信号,调节输出电压和电流,实现最大功率点追踪。
3.5 单片机程序设计

利用STM32F103实现MPPT的单片机程序主要包括以下几个部分:

  1. 初始化:初始化外设接口,包括ADC、PWM、GPIO等。
  2. 传感器数据采集:通过ADC接口读取电压和电流传感器的数据。
  3. MPPT算法实现:根据传感器数据,运行MPPT算法,计算最佳的电压和电流值。
  4. 控制DC-DC转换器:通过PWM接口控制DC-DC转换器,调节输出电压和电流。
  5. 实时更新:持续采集传感器数据,实时调整输出电压和电流。

以下是具体的程序代码示例:

c 复制代码
#include "stm32f1xx_hal.h"

// ADC句柄
ADC_HandleTypeDef hadc1;
ADC_HandleTypeDef hadc2;

// 定时器句柄
TIM_HandleTypeDef htim1;

// 初始化ADC
void MX_ADC1_Init(void) {
    __HAL_RCC_ADC1_CLK_ENABLE();
    hadc1.Instance = ADC1;
    hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
    hadc1.Init.ContinuousConvMode = DISABLE;
    hadc1.Init.DiscontinuousConvMode = DISABLE;
    hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
    hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    hadc1.Init.NbrOfConversion = 1;
    HAL_ADC_Init(&hadc1);
}

void MX_ADC2_Init(void) {
    __HAL_RCC_ADC2_CLK_ENABLE();
    hadc2.Instance = ADC2;
    hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE;
    hadc2.Init.ContinuousConvMode = DISABLE;
    hadc2.Init.DiscontinuousConvMode = DISABLE;
    hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
    hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    hadc2.Init.NbrOfConversion = 1;
    HAL_ADC_Init(&hadc2);
}

// 初始化定时器,用于PWM
void MX_TIM1_Init(void) {
    __HAL_RCC_TIM1_CLK_ENABLE();
    htim1.Instance = TIM1;
    htim1.Init.Prescaler = 72 - 1;
    htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
    htim1.Init.Period = 20000 - 1;
    htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    htim1.Init.RepetitionCounter = 0;
    HAL_TIM_PWM_Init(&htim1);

    TIM_OC_InitTypeDef sConfigOC;
    sConfigOC.OCMode = TIM_OCMODE_PWM1;
    sConfigOC.Pulse = 1500; // 初始化占空比
    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
    sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
    sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
    sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
    sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
    HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
}

// 设置PWM占空比
void Set_PWM_DutyCycle(uint16_t duty) {
    __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, duty);
}

// 初始化所有ADC
void Init_ADC() {
    MX_ADC1_Init();
    MX_ADC2_Init();
}

// 读取ADC值
uint32_t Read_ADC_Value(ADC_HandleTypeDef* hadc) {
    HAL_ADC_Start(hadc);
    HAL_ADC_PollForConversion(hadc, HAL_MAX_DELAY);
    uint32_t value = HAL_ADC_GetValue(hadc);
    HAL_ADC_Stop(hadc);
    return value;
}

int main(void) {
    HAL_Init();
    Init_ADC();
    MX_TIM1_Init();

    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

    while (1) {
        // 读取电压和电流传感器数据
        uint32_t voltage = Read_ADC_Value(&hadc1);
        uint32_t current = Read_ADC_Value(&hadc2);

        // 运行MPPT算法,计算最佳占空比
        uint16_t duty_cycle = MPPT_Algorithm(voltage, current);

        // 设置DC-DC转换器占空比
        Set_PWM_DutyCycle(duty_cycle);

        HAL_Delay(1000);
    }
}

// MPPT算法实现(例如P&O算法)
uint16_t MPPT_Algorithm(uint32_t voltage, uint32_t current) {
    static uint32_t prev_power = 

0;
    static uint32_t prev_voltage = 0;
    uint32_t power = voltage * current;
    uint16_t duty_cycle = __HAL_TIM_GET_COMPARE(&htim1, TIM_CHANNEL_1);

    if (power > prev_power) {
        if (voltage > prev_voltage) {
            duty_cycle += 10; // 增加占空比
        } else {
            duty_cycle -= 10; // 减少占空比
        }
    } else {
        if (voltage > prev_voltage) {
            duty_cycle -= 10; // 减少占空比
        } else {
            duty_cycle += 10; // 增加占空比
        }
    }

    prev_power = power;
    prev_voltage = voltage;

    return duty_cycle;
}

以上代码展示了如何初始化ADC和PWM接口,读取电压和电流传感器数据,运行MPPT算法,并通过PWM信号控制DC-DC转换器实现最大功率点追踪。


第四章:利用STM32F103与4G模块连接阿里云MQTT服务

4.1 MQTT概述

MQTT(Message Queuing Telemetry Transport)是一种轻量级的物联网通信协议,特别适用于低带宽、高延迟或不稳定的网络环境。通过MQTT协议,物联网设备可以实现远程数据传输和控制,广泛应用于智能家居、工业控制、智慧城市等领域。

4.2 硬件选择

在本项目中,我们选择使用STM32F103C8T6单片机和4G模块,通过MQTT协议连接到阿里云物联网平台,实现设备状态信息的远程传输和控制。

  • STM32F103C8T6单片机:作为主控芯片,负责数据采集、处理和通信。
  • 4G模块:选择SIM7600CE 4G模块,提供移动网络连接功能。
  • 阿里云物联网平台:作为MQTT服务的云端平台,用于设备数据的接收和处理。
  • 其他组件:包括电源模块(如5V DC电源模块)、连接线等。
4.3 硬件连接
  1. 4G模块连接
    • SIM7600CE的UART接口(TXD、RXD)连接到STM32F103的USART1接口(PA9、PA10)。
    • SIM7600CE的电源(VCC)连接到5V电源,地(GND)连接到系统地。
4.4 系统架构

MQTT系统的整体架构如下:

  1. STM32F103控制器:采集设备数据,通过USART接口与4G模块通信。
  2. 4G模块:通过移动网络连接到阿里云物联网平台,实现数据传输。
  3. 阿里云物联网平台:接收并处理设备数据,通过MQTT协议实现远程控制和监控。
4.5 单片机程序设计

利用STM32F103与4G模块连接阿里云MQTT服务的单片机程序主要包括以下几个部分:

  1. 初始化:初始化外设接口,包括USART、GPIO等。
  2. 4G模块初始化:配置4G模块,连接移动网络。
  3. MQTT连接:通过4G模块连接到阿里云MQTT服务,建立MQTT连接。
  4. 数据采集与发送:采集设备状态数据,通过MQTT协议发送到阿里云。
  5. 远程控制:接收阿里云的控制指令,执行相应操作。

以下是具体的程序代码示例:

c 复制代码
#include "stm32f1xx_hal.h"
#include "usart.h"

// USART句柄
UART_HandleTypeDef huart1;

// 初始化USART
void MX_USART1_UART_Init(void) {
    __HAL_RCC_USART1_CLK_ENABLE();
    huart1.Instance = USART1;
    huart1.Init.BaudRate = 115200;
    huart1.Init.WordLength = UART_WORDLENGTH_8B;
    huart1.Init.StopBits = UART_STOPBITS_1;
    huart1.Init.Parity = UART_PARITY_NONE;
    huart1.Init.Mode = UART_MODE_TX_RX;
    huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    huart1.Init.OverSampling = UART_OVERSAMPLING_16;
    HAL_UART_Init(&huart1);
}

// 发送AT命令
void Send_AT_Command(char* cmd) {
    HAL_UART_Transmit(&huart1, (uint8_t*)cmd, strlen(cmd), HAL_MAX_DELAY);
    HAL_UART_Transmit(&huart1, (uint8_t*)"\r\n", 2, HAL_MAX_DELAY);
}

// 初始化4G模块
void Init_SIM7600CE() {
    Send_AT_Command("AT");
    HAL_Delay(1000);
    Send_AT_Command("AT+CPIN?");
    HAL_Delay(1000);
    Send_AT_Command("AT+CSQ");
    HAL_Delay(1000);
    Send_AT_Command("AT+CREG?");
    HAL_Delay(1000);
    Send_AT_Command("AT+CGATT?");
    HAL_Delay(1000);
    Send_AT_Command("AT+CIPSHUT");
    HAL_Delay(1000);
    Send_AT_Command("AT+CIPMUX=0");
    HAL_Delay(1000);
    Send_AT_Command("AT+CSTT=\"your_apn\",\"\",\"\"");
    HAL_Delay(1000);
    Send_AT_Command("AT+CIICR");
    HAL_Delay(1000);
    Send_AT_Command("AT+CIFSR");
    HAL_Delay(1000);
    Send_AT_Command("AT+CIPSTART=\"TCP\",\"mqtt.aliyun.com\",\"1883\"");
    HAL_Delay(1000);
}

// MQTT连接
void MQTT_Connect() {
    Send_AT_Command("AT+CIPSEND");
    HAL_Delay(1000);
    char connect_msg[] = {0x10, 0x10, 0x00, 0x04, 'M', 'Q', 'T', 'T', 0x04, 0x02, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00};
    HAL_UART_Transmit(&huart1, (uint8_t*)connect_msg, sizeof(connect_msg), HAL_MAX_DELAY);
}

// 发送数据
void MQTT_Publish(char* topic, char* message) {
    Send_AT_Command("AT+CIPSEND");
    HAL_Delay(1000);
    char publish_msg[256];
    uint16_t topic_len = strlen(topic);
    uint16_t msg_len = strlen(message);
    publish_msg[0] = 0x30;
    publish_msg[1] = topic_len + msg_len + 2;
    publish_msg[2] = topic_len >> 8;
    publish_msg[3] = topic_len & 0xFF;
    strcpy(&publish_msg[4], topic);
    strcpy(&publish_msg[4 + topic_len], message);
    HAL_UART_Transmit(&huart1, (uint8_t*)publish_msg, topic_len + msg_len + 4, HAL_MAX_DELAY);
}

int main(void) {
    HAL_Init();
    MX_USART1_UART_Init();

    Init_SIM7600CE();
    MQTT_Connect();

    while (1) {
        // 模拟采集设备数据
        char* device_data = "temperature=25&humidity=60";
        
        // 发送设备数据到阿里云
        MQTT_Publish("your_topic", device_data);

        HAL_Delay(5000); // 每隔5秒发送一次数据
    }
}

以上代码展示了如何初始化USART接口,配置4G模块,建立MQTT连接,并通过MQTT协议发送设备状态数据到阿里云。

相关推荐
安庆平.Я24 分钟前
STM32——定时器:高级定时器
stm32·单片机·嵌入式硬件
顾北121 小时前
阿里百炼AI大模型接入指南
阿里云·ai编程
@HNUSTer1 小时前
基于 GEE 利用多波段合成的方法高效处理并下载数据——以 MODIS 潜热通量(LE)年均值数据产品下载为例
云计算·数据集·遥感大数据·gee·云平台·modis·潜热通量(le)
1621B驱动芯片原厂1 小时前
YL1621 芯片成功案例推荐
stm32·单片机·嵌入式硬件·mcu·51单片机
良许Linux3 小时前
STM32F103每个符号的意思是什么?
stm32·单片机·嵌入式硬件
小痞同学4 小时前
【铁头山羊STM32】HAL库 4.时钟系统部分
stm32·单片机·嵌入式硬件
我怕是好4 小时前
学习STM32 ESP8266
stm32·嵌入式硬件·学习
炸膛坦客4 小时前
FreeRTOS 学习:(二十六)FreeRTOS 专用延时函数(相对延时、绝对延时)
stm32·操作系统·freertos
S火星人S5 小时前
软件调试基础(四【断点和单步执行】4.3【陷阱标志】)
stm32·单片机·嵌入式硬件
NEWEVA__zzera226 小时前
AM32开源项目固件解析(STM32G071)
stm32·单片机·嵌入式硬件