STM32智能交通监测系统教程

目录

  1. 引言
  2. 环境准备
  3. 智能交通监测系统基础
  4. 代码实现:实现智能交通监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化
  5. 应用场景:交通监测与管理
  6. 问题解决方案与优化
  7. 收尾与总结

1. 引言

智能交通监测系统通过STM32嵌入式系统结合各种传感器、执行器和通信模块,实现对交通数据的实时监控、自动处理和数据传输。本文将详细介绍如何在STM32系统中实现一个智能交通监测系统,包括环境准备、系统架构、代码实现、应用场景及问题解决方案和优化方法。

2. 环境准备

硬件准备

  1. 开发板:STM32F4系列或STM32H7系列开发板
  2. 调试器:ST-LINK V2或板载调试器
  3. 传感器:如超声波传感器、红外传感器、摄像头、速度传感器等
  4. 执行器:如交通信号灯、报警器
  5. 通信模块:如Wi-Fi模块、LoRa模块
  6. 显示屏:如OLED显示屏
  7. 按键或旋钮:用于用户输入和设置
  8. 电源:电源适配器

软件准备

  1. 集成开发环境(IDE):STM32CubeIDE或Keil MDK
  2. 调试工具:STM32 ST-LINK Utility或GDB
  3. 库和中间件:STM32 HAL库和FreeRTOS

安装步骤

  1. 下载并安装STM32CubeMX
  2. 下载并安装STM32CubeIDE
  3. 配置STM32CubeMX项目并生成STM32CubeIDE项目
  4. 安装必要的库和驱动程序

3. 智能交通监测系统基础

控制系统架构

智能交通监测系统由以下部分组成:

  1. 数据采集模块:用于采集交通中的车辆数量、速度、车距、车牌等数据
  2. 数据处理与控制模块:对采集的数据进行处理和分析,生成控制信号
  3. 通信与网络系统:实现交通数据与服务器或其他设备的通信
  4. 显示系统:用于显示系统状态和交通数据
  5. 用户输入系统:通过按键或旋钮进行设置和调整

功能描述

通过各种传感器采集交通数据,并实时显示在OLED显示屏上。系统通过数据处理和网络通信,实现对交通数据的监测和管理。用户可以通过按键或旋钮进行设置,并通过显示屏查看当前状态。

4. 代码实现:实现智能交通监测系统

4.1 数据采集模块

配置超声波传感器

使用STM32CubeMX配置GPIO接口:

  1. 打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的GPIO引脚,设置为输入和输出模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

#include "stm32f4xx_hal.h"

#define TRIG_PIN GPIO_PIN_0
#define ECHO_PIN GPIO_PIN_1
#define GPIO_PORT GPIOA

void GPIO_Init(void) {
    __HAL_RCC_GPIOA_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = TRIG_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = ECHO_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);
}

uint32_t Read_Distance(void) {
    HAL_GPIO_WritePin(GPIO_PORT, TRIG_PIN, GPIO_PIN_RESET);
    HAL_Delay(2);
    HAL_GPIO_WritePin(GPIO_PORT, TRIG_PIN, GPIO_PIN_SET);
    HAL_Delay(10);
    HAL_GPIO_WritePin(GPIO_PORT, TRIG_PIN, GPIO_PIN_RESET);

    uint32_t startTime = HAL_GetTick();
    while (HAL_GPIO_ReadPin(GPIO_PORT, ECHO_PIN) == GPIO_PIN_RESET) {
        if (HAL_GetTick() - startTime > 100) {
            return 0; // Timeout
        }
    }

    startTime = HAL_GetTick();
    while (HAL_GPIO_ReadPin(GPIO_PORT, ECHO_PIN) == GPIO_PIN_SET) {
        if (HAL_GetTick() - startTime > 100) {
            return 0; // Timeout
        }
    }

    uint32_t travelTime = HAL_GetTick() - startTime;
    uint32_t distance = travelTime * 0.034 / 2; // Calculate distance in cm

    return distance;
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIO_Init();

    uint32_t distance;

    while (1) {
        distance = Read_Distance();
        HAL_Delay(1000);
    }
}
配置速度传感器

使用STM32CubeMX配置TIM接口:

  1. 打打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的TIM引脚,设置为输入模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

#include "stm32f4xx_hal.h"

TIM_HandleTypeDef htim2;

void TIM2_Init(void) {
    __HAL_RCC_TIM2_CLK_ENABLE();

    TIM_ClockConfigTypeDef sClockSourceConfig = {0};
    TIM_MasterConfigTypeDef sMasterConfig = {0};

    htim2.Instance = TIM2;
    htim2.Init.Prescaler = 0;
    htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
    htim2.Init.Period = 0xFFFFFFFF;
    htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
    HAL_TIM_Base_Init(&htim2);

    sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
    HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);
    HAL_TIM_IC_Init(&htim2);

    sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
    sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
    HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);
}

uint32_t Read_Speed(void) {
    HAL_TIM_IC_Start(&htim2, TIM_CHANNEL_1);
    HAL_Delay(100);
    uint32_t count = __HAL_TIM_GET_COUNTER(&htim2);
    HAL_TIM_IC_Stop(&htim2, TIM_CHANNEL_1);

    return count;
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    TIM2_Init();

    uint32_t speed;

    while (1) {
        speed = Read_Speed();
        HAL_Delay(1000);
    }
}
配置红外传感器

使用STM32CubeMX配置GPIO接口:

  1. 打打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的GPIO引脚,设置为输入模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

#include "stm32f4xx_hal.h"

#define IR_PIN GPIO_PIN_0
#define GPIO_PORT GPIOB

void GPIOB_Init(void) {
    __HAL_RCC_GPIOB_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = IR_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);
}

uint8_t Read_IR_Sensor(void) {
    return HAL_GPIO_ReadPin(GPIO_PORT, IR_PIN);
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIOB_Init();

    uint8_t ir_status;

    while (1) {
        ir_status = Read_IR_Sensor();
        HAL_Delay(1000);
    }
}

4.2 数据处理与控制模块

数据处理模块将传感器数据转换为可用于控制系统的数据,并进行必要的计算和分析。

交通控制算法

实现一个简单的交通控制算法,根据传感器数据控制交通信号灯和报警器:

#define DISTANCE_THRESHOLD 20
#define SPEED_THRESHOLD 100
#define CAR_DETECTED 1

void Control_Traffic(uint32_t distance, uint32_t speed, uint8_t ir_status) {
    if (distance < DISTANCE_THRESHOLD || speed > SPEED_THRESHOLD || ir_status == CAR_DETECTED) {
        // 打开红灯和报警器
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // 红灯
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); // 报警器
    } else {
        // 打开绿灯,关闭报警器
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); // 红灯
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); // 报警器
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET); // 绿灯
    }
}

void GPIOB_Init(void) {
    __HAL_RCC_GPIOB_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIOB_Init();
    GPIO_Init();
    TIM2_Init();

    uint32_t distance, speed;
    uint8_t ir_status;

    while (1) {
        distance = Read_Distance();
        speed = Read_Speed();
        ir_status = Read_IR_Sensor();

        Control_Traffic(distance, speed, ir_status);

        HAL_Delay(1000);
    }
}

4.3 通信与网络系统实现

配置Wi-Fi模块

使用STM32CubeMX配置UART接口:

  1. 打打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的UART引脚,设置为UART模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

#include "stm32f4xx_hal.h"
#include "usart.h"
#include "wifi_module.h"

UART_HandleTypeDef huart1;

void UART1_Init(void) {
    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);
}

void Send_Traffic_Data_To_Server(uint32_t distance, uint32_t speed, uint8_t ir_status) {
    char buffer[128];
    sprintf(buffer, "Distance: %lu, Speed: %lu, IR: %u", distance, speed, ir_status);
    HAL_UART_Transmit(&huart1, (uint8_t*)buffer, strlen(buffer), HAL_MAX_DELAY);
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    UART1_Init();
    GPIO_Init();
    TIM2_Init();

    uint32_t distance, speed;
    uint8_t ir_status;

    while (1) {
        distance = Read_Distance();
        speed = Read_Speed();
        ir_status = Read_IR_Sensor();

        Send_Traffic_Data_To_Server(distance, speed, ir_status);

        HAL_Delay(1000);
    }
}

4.4 用户界面与数据可视化

配置OLED显示屏

使用STM32CubeMX配置I2C接口:

  1. 打打开STM32CubeMX,选择您的STM32开发板型号。
  2. 在图形化界面中,找到需要配置的I2C引脚,设置为I2C模式。
  3. 生成代码并导入到STM32CubeIDE中。

代码实现:

首先,初始化OLED显示屏:

#include "stm32f4xx_hal.h"
#include "i2c.h"
#include "oled.h"

void Display_Init(void) {
    OLED_Init();
}

然后实现数据展示函数,将交通数据展示在OLED屏幕上:

void Display_Data(uint32_t distance, uint32_t speed, uint8_t ir_status) {
    char buffer[32];
    sprintf(buffer, "Distance: %lu cm", distance);
    OLED_ShowString(0, 0, buffer);
    sprintf(buffer, "Speed: %lu", speed);
    OLED_ShowString(0, 1, buffer);
    sprintf(buffer, "IR: %u", ir_status);
    OLED_ShowString(0, 2, buffer);
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    I2C1_Init();
    Display_Init();
    GPIOB_Init();
    GPIO_Init();
    TIM2_Init();

    uint32_t distance, speed;
    uint8_t ir_status;

    while (1) {
        distance = Read_Distance();
        speed = Read_Speed();
        ir_status = Read_IR_Sensor();

        // 显示交通数据
        Display_Data(distance, speed, ir_status);

        HAL_Delay(1000);
    }
}

5. 应用场景:交通监测与管理

智能交通信号控制

智能交通监测系统可以用于城市交通信号控制,通过实时采集交通数据,实现自动控制,提高交通管理效率和安全性。

道路交通监控

在道路交通监控中,智能交通监测系统可以实现对车辆流量、速度和车距的实时监控,确保道路交通的畅通和安全。

智能停车管理

智能交通监测系统可以用于智能停车管理,通过数据采集和分析,为停车场的管理和优化提供科学依据。

智能交通研究

智能交通监测系统可以用于智能交通研究,通过数据采集和分析,为交通管理和优化提供科学依据。

⬇帮大家整理了单片机的资料

包括stm32的项目合集【源码+开发文档】

点击下方蓝字即可领取,感谢支持!⬇

点击领取更多嵌入式详细资料

问题讨论,stm32的资料领取可以私信!

6. 问题解决方案与优化

常见问题及解决方案

传感器数据不准确

确保传感器与STM32的连接稳定,定期校准传感器以获取准确数据。

解决方案:检查传感器与STM32之间的连接是否牢固,必要时重新焊接或更换连接线。同时,定期对传感器进行校准,确保数据准确。

交通数据处理不稳定

优化处理算法和硬件配置,减少数据处理的不稳定性,提高系统反应速度。

解决方案:优化处理算法,调整参数,减少振荡和超调。使用高精度传感器,提高数据采集的精度和稳定性。选择更高效的执行器,提高数据处理的响应速度。

数据传输失败

确保Wi-Fi模块与STM32的连接稳定,优化通信协议,提高数据传输的可靠性。

解决方案:检查Wi-Fi模块与STM32之间的连接是否牢固,必要时重新焊接或更换连接线。优化通信协议,减少数据传输的延迟和丢包率。选择更稳定的通信模块,提升数据传输的可靠性。

显示屏显示异常

检查I2C通信线路,确保显示屏与MCU之间的通信正常,避免由于线路问题导致的显示异常。

解决方案:检查I2C引脚的连接是否正确,确保电源供电稳定。使用示波器检测I2C总线信号,确认通信是否正常。如有必要,更换显示屏或MCU。

优化建议

数据集成与分析

集成更多类型的传感器数据,使用数据分析技术进行交通状态的预测和优化。

建议:增加更多监测传感器,如雷达传感器、摄像头等。使用云端平台进行数据分析和存储,提供更全面的交通监测和管理服务。

用户交互优化

改进用户界面设计,提供更直观的数据展示和更简洁的操作界面,增强用户体验。

建议:使用高分辨率彩色显示屏,提供更丰富的视觉体验。设计简洁易懂的用户界面,让用户更容易操作。提供图形化的数据展示,如实时交通图表、历史记录等。

智能化控制提升

增加智能决策支持系统,根据历史数据和实时数据自动调整交通管理策略,实现更高效的交通环境控制和管理。

建议:使用数据分析技术分析交通数据,提供个性化的交通管理建议。结合历史数据,预测可能的问题和需求,提前优化控制策略。

7. 收尾与总结

本教程详细介绍了如何在STM32嵌入式系统中实现智能交通监测系统,从硬件选择、软件实现到系统配置和应用场景都进行了全面的阐述。通过合理的技术选择和系统设计,可以构建一个高效且功能强大的智能交通监测系统。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新手教学系列——高效管理MongoDB数据:批量插入与更新的实战技巧

前言 在日常开发中,MongoDB作为一种灵活高效的NoSQL数据库,深受开发者喜爱。然而,如何高效地进行数据的批量插入和更新,却常常让人头疼。今天,我们将一起探讨如何使用MongoDB的bulk_write方法,简化我们的数据管理流程,让代码更加简洁高效。 常规做法:find、insertone…

mysql的索引事务和存储引擎

一、索引 1、索引 索引的概念 &#xff1a;索引是一个排序的列表&#xff0c;在列表当中存储索引的值以及索引值对应数据所在的物理行。 索引的引用&#xff1a; 使用索引之后&#xff0c;就不需要扫描全表来定位某行的数据。 加快数据库的查询速度。 索引可以是表中的一…

Python教授耗费13年总结的400页《Python工匠》手册

Python 能干的事情实在太多了&#xff0c;掰着指头数有点不够用。 Web 开发、数据分析、网络爬虫、自动化运维、后台开发、机器学习....... 如果你知道主攻哪个方向&#xff0c;只需重点去学习。不过&#xff0c;不论哪个方向&#xff0c;Python 编程的核心知识都是需要掌握的…

docker搭建普罗米修斯监控gpu

ip8的服务器监控ip110和ip111的服务器 被监控的服务器110和111只需要安装node-export和nvidia-container-toolkit 下载镜像包 docker pull prom/node-exporter docker pull prom/prometheus docker pull grafana/grafana新建目录 mkdir /opt/prometheus cd /opt/prometheus/…

ESP32部署TensorFlow Lite

本来是想找一篇中文教程&#xff0c;不过只看到一个英文官方的&#xff0c;也行吧&#xff0c;虽然效率会慢丢丢。 GitHub - espressif/esp-tflite-micro: TensorFlow Lite Micro for Espressif Chipsets 看了一圈&#xff0c;有个中文的&#xff1a; esp-dl/README_cn.md a…

SpringBoot增加网关服务

一、新建gateway项目 二、添加依赖 dependencies {implementation org.springframework.cloud:spring-cloud-starter-gateway:4.0.0 } 三、增加路由规则配置 一个web服务、一个service服务 bootstrap.yaml&#xff1a; server:port: 80 spring:application:name: gatewayc…

品牌产业出海指南如何搭建国际化架构的跨境电商平台?

在“品牌&产业出海指南 – 成功搭建跨境电商平台”系列中&#xff0c;我们将从电商分销系统、跨境平台商城/多商户商城系统和国际化架构三个方面对帮助您梳理不同平台模式的优缺点、应用场景、开发重点和运营建议。 在“品牌&产业出海指南 – 成功搭建跨境电商平台”系…

记录|实体PLC+原理+编址

记录来源&#xff1a; 看一看PLC上面的文字写了什么信息呢~ PLC原理 PLC编址 PLC编址3 PLC编址4 额外补充&#xff1a; 开关量输入硬件连接&#xff08;2)-按钮的接线 目录 总结一、DC/DC/DC二、DI a三、AI四、DQ五、AQ六、PLC原理七、PLC编址1. I、Q、M2. 编址表达2.1 位地址表…

R语言实现对模型的参数优化与评价KS曲线、ROC曲线、深度学习模型训练、交叉验证、网格搜索

目录 一、模型性能评估 1、数据预测评估 2、概率预测评估 二、模型参数优化 1、训练集、验证集、测试集的引入 2、k折线交叉验证 2、网格搜索 一、模型性能评估 1、数据预测评估 ### 数据预测评估 #### 加载包&#xff0c;不存在就进行在线下载后加载if(!require(mlben…

vue项目1分钟实现自定义右键菜单,懒人的福音

高效实现需求&#xff0c;避免重复造轮子&#xff0c;今天给大家分享的是&#xff0c;如何在最短的时间内实现右键菜单&#xff0c;方法也很简单&#xff0c;一个插件就可以搞定&#xff0c;话不多说&#xff0c;上效果图&#xff1a; 1. 效果图&#xff1a; 2. 安装&#xff…

【tabby】Tabby : vi/vim 中文乱码问题

修改配置文件&#xff1a; 原始是&#xff1a; appearance: {}替换为&#xff1a; 如下位置填写&#xff1a;UTF-8 或者 GBK。试试&#xff0c;重启tabby后查看效果。 注意-前是有两个空格的。 appearance:- Character encoding: UTF-8 参考文章 Tabby使用之:中文乱码问题

Pycharm 导入 conda 环境

使用时经常在此处卡壳&#xff0c;在此做个记录。 这个位置选择 conda 安装路径下的 python.exe 文件即可

C语言之大小端理解

目录 1前言2 大小端理解与区分3 大小端的识别和基本切换操作4 总结 1前言 在汽车CAN通讯报文中往往会接触到Intel类型和motorola类型&#xff0c;实际项目中涉及到多机通讯也会接触到大小端问题 2 大小端理解与区分 大端(Big_Endian) :低字节放在高地址小端(Little_Endian):…

STM32智能交通灯系统教程

目录 引言环境准备智能交通灯系统基础代码实现&#xff1a;实现智能交通灯系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;交通管理与优化问题解决方案与优化收尾与总结 1. 引言 智能交通灯系统通过STM…

提高使用安全,智慧校园在线用户功能概述

智慧校园系统融入了一个查看当前在线用户的功能&#xff0c;这一设计旨在为管理人员提供一个实时的窗口&#xff0c;洞悉校园平台的即时活跃情况&#xff0c;确保系统的高效运作与环境安全。通过这一功能&#xff0c;管理员能够一目了然地看到所有正活跃在平台上的用户群体&…

古玻璃制品的成分分析与鉴别详解【国一,附完整代码】

​ 声明&#xff1a;2024年数模国赛即将来临&#xff0c;为助力国赛和钉钉杯&#xff0c;我将重温22年小样本国赛C题和23年大样本国赛C题&#xff0c;给出详细思路和完整代码&#xff0c;供广大数模爱好者阅览&#xff0c;如需比赛指导&#xff0c;请联系文章底部卡片咨询。 未…

【实战】安装Webtours

首先&#xff0c;安装jdk。过程如下图。 添加环境变量&#xff0c;如下图。 安装activeperl&#xff0c;如下图。 复制Webtours文件夹到计算机中&#xff0c;之后双击webtours文件夹中的xigui32.exe&#xff0c;启动webtours的应用服务器。 之后&#xff0c;可以在任务栏右下角…

10校大满贯!中国内地高校2024年1-6月CNS发文统计出炉

随着全球科研竞争的日趋激烈&#xff0c;CNS&#xff08;Cell、Nature、Science&#xff09;作为科学领域的三大顶级期刊&#xff0c;不仅是科研成果的展示平台&#xff0c;更是各国科研实力比拼的重要战场。近年来&#xff0c;中国高校在国际科研舞台上的表现愈发抢眼&#xf…

LocalAI离线安装部署

简介 LocalAI是免费的开源 OpenAI 替代品。LocalAI 可作为替代 REST API&#xff0c;与 OpenAI&#xff08;Elevenlabs、Anthropic……&#xff09;API 规范兼容&#xff0c;用于本地 AI 推理。它允许您在本地或使用消费级硬件运行 LLM、生成图像、音频&#xff08;不止于此&a…

xmind梳理测试点,根据这些测试点去写测试用例

基本流&#xff08;冒烟用例必写&#xff09; 备选流 公共测试点&#xff1a;