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

PH47代码框架功能速查

1. PH47框架逻辑层全局引用对象

全局引用

功能简介

快速访问

bus

数据总线系统功能实现,如对总线数据项读写操作等

数据总线bus

drv

驱动层功能实现,如飞控板相关的各种硬件传感器设备进行操作等

驱动层drv

mcu

对mcu的片内接口及设备进行操作

驱动层mcu

frm

框架层基本功能实现

框架层frm

frm.led

对飞控板状态指示led进行操作

frm.mutipilot

多飞控板协作功能实现

core

框架层高级功能实现

core.mavlink

mavlink 协议对地遥测通讯功能实现

mavlink

core.airlink

mavlink协议空对空遥测通讯功能实现

core.para

对机载参数进行读写及存储等操作

机载参数系统

core.wp

对导航航点进行读写及修改操作

algo

算法层功能实现

应用层app

app

应用层功能实现

应用层开发

2. PH47框架全局函数及变量

全局状态变量操作相关函数

功能描述

对应函数

快速访问

全局状态变量状态操作

gSetStatus()

gGetStatus()

全局状态变量

设置全局错误、警告

gSetGlobalState()

设置飞控板状态GPIO 测试Pin

gTrigleTestPin()

全局时间相关功能函数

功能描述

对应函数

快速访问

获取当前ms时间

gGetMills()

时间相关

获取当前ms时间,精确到us

gGetMills_f()

获取前一时刻到当前的ms时间间隔

gGetTmUsage_ms()

获取时间间隔

获取前一时刻到当前的us时间间隔

gGetTmUsage_us()

ms 级别延时,非阻塞,但依赖于FreeRtos启动

osDelay()

ms 级别延时,阻塞,不依赖FreeRtos

HAL_Delay()

us 级别延时,阻塞

gDelay_us()

全局调试及信息显示相关函数

功能描述

对应函数

快速访问

调试信息输出宏(队列方式,依赖于框架启动完成)

TRACE()

调试输出

真值确认宏

ASSERT()

调试串口字符串输出(中断方式)

gPrintf()

调试串口以及CSS状态窗口信息输出

gShowInfo()

格式化字符串生成

gFormat()

3. 数据总线操作(通过bus引用)

驱动层常用功能函数(通过drv或mcu引用)

功能描述

对应函数

快速访问

设置总线数据项的数值

Set()

数据总线

设置当前总线数据为安全总线

SetSafe()

获取总线数据项数值

Get()

获取总线数值的引用

GetRef()

获取总线数据项最近一次被

设置时刻的时间戳(ms)

GetTimeStamp_ms()

GetTmStampDec_us()

获取总线数据项最近两次被设置时刻间的时间间隔

GetDt2Prev_us()

GetDt2Prev_ms()

驱动层功能函数大多数为MCU接口驱动,一般用于飞控板硬件层面驱动程序的开发。目前代码框架已支持的传感器硬件输出数据均已纳入到数据总线体系,用户可直接使用。初级开发者无需过多关心。

但是驱动层也提供了少量功能函数供各层级的开发者使用,最常用的是Pwm输入输出相关函数。

Pwm操作函数(通过drv._pPwm引用)

功能描述

对应函数

快速访问

获取当前输入通道的Pwm脉冲宽度(us)

GetPwmIn()

设置当前Pwm输出通道的 Pmw脉冲宽度(us)

SetPwmWidth();

使能当前Pwm输出控制

EnablePwmOut()

Stm32 ADC 电压测量函数(全局函数)

功能描述

对应函数

快速访问

获取当前控制板电压测量通道的电压数值

(测量范围0-3.3v, 单位:0.01v。测量电压必须在控制板外进行分压处理,否则会烧毁控制板!)

gGetBoardVol()

获取当前电池电压测量通道的电压数值

(测量范围0-3.3v, 单位:0.01v。测量电压必须在控制板外进行分压处理,否则会烧毁控制板!)

gGetBatteryVol()

驱动层串口常用操作(通过指针drv._pUsartXxx引用)

功能描述

对应函数

快速访问

发送数据环形缓冲区对象,FIFO

CPhSerial._RingBuf_Snd

接收数据环形缓冲区对象,FIFO

CPhSerial._RingBuf_Rev

设置串口波特率

SetBaudRate()

以中断方式将字符串写入串口发送环形缓冲区并立即发送。

WriteData_INT()

以DMA方式将直接发送字符串(不写入发送环形缓冲区)。

WriteData_DMA()

将一个字符加入串口发送环形缓冲区(但不发送)

Add2SndBuf()

将字符串加入串口发送环形缓冲区(但不发送)

Add2SndBuf_DMA()

以中断方式发送当前环形发送缓冲区中的数据

StartSend_IT()

以DMA方式发送当前环形发送缓冲区中的数据

StartSend_DMA()

获取当前接收环形缓冲区当中的数据字节数

GetRevCount()

读取当前接收环形缓冲区当中的一个字节数据,读取成功后将该直接数据移出环形缓冲区

GetRevByte()

判断当前串口DMA是否忙碌

IsDmaBusy()

驱动层SPI接口常用操作(通过指针mcu. _pSpiXxx引用)

功能描述

对应函数

快速访问

设置当前spi接口速率

SetSpeed()

写入1字节数据到spi

WriteByte()

从spi接口读取1字节数据

ReadByte()

写入多个字节数据到spi

SpiTran()

从spi接口读取多个字节数据

SpiReceive()

同时向spi接口中写入并读取多个字节数据

SpiTranRev()

驱动层I2C接口常用操作(通过指针mcu._pI2C_Xxx引用)

功能描述

对应函数

快速访问

ST, 产生 IIC 起始信号

IIC_Start()

SP, 产生 IIC 停止信号

IIC_Stop()

等待应答信号到来, 返回值:应答等待时间(us)

IIC_Wait_Ack()

产生ACK应答

IIC_Ack(void)

不产生ACK应答

IIC_Nack()

向I2C写入一个字节, 并返回从机有无应答

IIC_Send_Byte()

从I2C读取一个字节

IIC_Read_Byte()

读取指定ID的I2C设备上指定地址的1字节数据

ReadOneByte()

向指定ID的I2C设备上指定地址写入1字节数据

WriteOneByte()

读取指定ID的I2C设备上从指定地址开始的多个字节数据

ReadBytes()

向指定ID的I2C设备上从指定地址写入多个字节数据

WriteBytes()

 4. 框架层常用功能函数(通过frm引用)

框架层基本功能函数(通过frm引用)

功能描述

对应函数

快速访问

读取全局状态变量数值

SetStatus()

框架层函数

置全局状态变量数值

GetStatus()

初始化Post 消息

InitPostMsg()

以Post方式发出一个消息

PostMsg()

检查是否有特定消息翼Post方式发出

CheckPostMsg()

对以Send方式发出的消息进行处理(回调函数)

HandleMessage()

当前是否工作于HIL模式

IsHilSimulateMode()

当前是否工作于真实传感器模式

IsSensorMode()

设置当前飞行模式

SetFlightMode()

对当前飞控实施指令控制

FlightControl_Ins()

处理来自GCS的上行mavlink控制命令

(回调函数)

CommonMsgProc_Gcs()

处理来自其他飞控板的mavlink控制命令

(回调函数)

CommonMsgProc_Air()

向GCS下行发送mavlink数据帧(回调函数)

MavMsgSnd2GCS_Slow()

所有参数上传完毕事件响应函数(回调函数)

Event_ParaUpComplete()

设置对GCS下行mavlink数据帧的发送速率

SetMsgRate_Gcs()

框架层基本子引用:状态指示LED控制(通过frm.led引用)

功能描述

对应函数

快速访问

翻转闪烁指示 LED

Led_Toggle()

以闪烁编码方式进行状态显示(非阻塞)

Led_ShowStatus()

框架层基本子引用:多飞控板协作(通过frm. mutipilot引用)

功能描述

对应函数

快速访问

改变当前调试串口(多功能串口)的用途

ChangeConsoleMode()

ChangeFlightCtrlRights()

MavMsgSnd2Airlink()

DP_MasterSnd2Slaver()

DP_SlaverSnd2Master()

DP S_ParseMasterMsg()

DPM_ParseSlaverMsg()

5. 框架层扩展功能及函数(通过core引用)

框架层重要成员变量(通过core引用)

功能描述

变  量

快速访问

PH47框架初始化全部完成标志

blSysInitCompleted

框架层扩展功能函数(通过core引用)

功能描述

对应函数

快速访问

读取全局状态变量数值

SetStatus()

置全局状态变量数值

GetStatus()

检查是否有特定消息翼Post方式发出

CheckPostMsg()

当前是否工作于真实传感器模式

IsSensorMode()

获取当前GPS精度状态

GetGpsStatus()

设置当前GPS精度状态

SetGpsStatus()

设置全局错误状态代码

SetGlobalState()

设置全局警告状态代码

SetGlobalError()

发送用户自定义mavlink数据帧

SendUserDefData()

框架层扩展子应用:对地遥测通讯(通过core.mavlink引用)

由于整个mavlink通讯系统已经进行了完善的封装,故初中级用户在二次开发过程中涉及到遥测通讯功能函数很少,主要集中在下行指令或状态发送方面。在其它方面,用户只需要专注于数据总线操作,从总线中读取或写入数据即可。

对于高级开发二次用户,关于遥测系统功能函数具体可参见代码实现文件\DevStudio\Frame\Core\MavlinkWrap.h。

功能描述

对应函数

快速访问

向GCS下行发送字符串信息

AddMsg_StatusText()

Mavlink

向GCS下行发送带7个参数的长控制命令

AddMsg_Command()

向GCS下行发送带2个参数的短控制命令

AddMsg_UserDefData()

框架层扩展子应用:机载参数系统(通过core.para引用)

与遥测系统类似,机载参数系统的读取、存储、更新及传送机制也进行了完善的封装,用户只需在需要时调用下述函数读取或写入参数即可,剩下所有工作由框架负责完成。

功能描述

对应函数

快速访问

获取机载参数数值

Get()

机载参数

设置机载参数数值

Set()

框架层扩展子应用:航点存储系统(通过core.wp引用)

功能描述

对应函数

快速访问

读取航点数据

ReadWP()

写入航点数据

WriteWP()

获取航点数量

GetWpCounts()

读取航点的位置信息

ReadWpLoc()

6. ​​​​​​​算法层功能(通过algo引用)

PH47代码框架层提供给二次开发用户的功能函数很少。在算法层当中集成了飞行及导航控制的大量功能实现,这些功能通过框架的架构组成了飞行及导航控制功能的具体实现。二次开发用户可使用算法层各模块的现有功能函数,但并不推荐。

算法层更重要的意义在于为用户进行二次开发,尤其是算法逻辑的二次开发搭建起了逻辑清晰,功能完善的设计及运行框架。用户在此框架下,可集中注意力在算法逻辑自身的开发上,而无需过多分心于运行逻辑的设计实现。

传感器数据处理模块指针(通过algo引用)

功能描述

功能模块指针

对应抽象类

主IMU类对象指针

_pSensor_IMU

CSensor_Imu_Port

扩展IMU类对象指针

_pSensor_IMU_Ext

CSensor_Imu_Port

磁强传感器类对象指针

_pSensor_Mag

CSensor_Mag_Port

气压传感器类对象指针

_pSensor_Baro

CSensor_Baro_Port

空速传感器类对象指针

_pSensor_Airspeed

CSensor_Airspeed_Port

Pwm输入处理类对象指针

_pSensor_RcCtrl

CSensor_RC_Port

Tof及光流处理类对象指针

_pSensor_Tof

CSensor_UsartParse_Port

控制功能模块指针(通过algo引用)

功能描述

功能模块指针

对应抽象类

输入数据控制器模块

_pCtrlDataProc

CCtrlDateProcess_Port

姿态解算模块

_pAttitudeCore

CAttitudeCore_Port

姿态控制器模块

_pController_Atti

CController_Attitude_Port

高度/速度控制器模块

_pController_HgtSpd

CController_HeightSpeed_Port

位置/速度估算器模块

_pPosVelCore

CPosVelCore_Port

位置控制器模块

_pController_Position

CController_Position_Port

Pwm输出控制器模块

_pServoOutCtrl

CServoOutCtrl_Port

7. ​​​​​​​应用层功能函数(通过app引用)

与算法层类似,应用层也为用户进行二次开发搭建了完善的框架。同时,应用层提供了多个回调函数(空函数)供用户加入自己的代码实现。

功能描述

回调函数

PH47框架启动完成后调用,完成用户功能代码初始化工作

Init()

快速线程回调函数,被调用频率在400-500hz之间

(基于Stm32F411的BBP飞控板)

FastThread()

正常线程回调函数,被调用频率固定为250hz

NormalThread_250Hz()

慢速线程回调函数,被调用频率固定为50hz

SlowThread_50Hz()

对用户自定义调试串口控制命令的处理函数

HandleConsoleCmd()

对来自于GCS的用户自定义上行控制命令处理函数

HandleRevMavlinkMsg()

飞行及导航控制实现函数。250hz速率调用,调用优先级高于NormalThread_250Hz()函数

FlightControl_FixWing()

起飞前检查回调函数

PreTakeOffCheck_FixWing()

飞行模式切换前回调函数

PreSwitchFlightMode()


更多内容见CSDN博客专栏:无人机飞控icon-default.png?t=O83Ahttps://blog.csdn.net/ss15/category_9690939.html?spm=1001.2014.3001.5482相关资源:PH47: PH47运动控制代码框架.icon-default.png?t=O83Ahttps://gitee.com/ss15/ph47

相关文章:

PH47代码框架功能速查

1. PH47框架逻辑层全局引用对象 全局引用 功能简介 快速访问 bus 数据总线系统功能实现,如对总线数据项读写操作等 数据总线bus drv 驱动层功能实现,如飞控板相关的各种硬件传感器设备进行操作等 驱动层drv mcu 对mcu的片内接口及设备进行操作…...

UVM寄存器模型:uvm_reg_adapter

文章目录 一、什么是uvm_reg_adapter1、what2、Example2.1、代码详解 二、如何使用uvm_reg_adapter三、为什么要引入uvm_reg_adapter 一、什么是uvm_reg_adapter 1、what uvm_reg_adapter继承于uvm_object,定义了用于在 uvm_reg_bus_op 和特定总线事务之间进行转换…...

总结OpenGL和pyrender安装和使用过程中的坑

目录 报错一:AttributeError: NoneType object has no attribute glGetError 报错二:ImportError: (Unable to load OpenGL library, OSMesa: cannot open shared object file: No such file or directory, OSMesa, None) 报错三:raise ImportError("Unable to load…...

温湿传感器(学习笔记下)

接着我们温湿传感器上半部分的学习,现在我们学习接下来的部分,编写GXHTC3驱动程序,也就是给gxhtc3.c文件添加代码,我们要判断gxhtc3芯片是否存在和正常,就要先读取gxhtc3的ID号,根据gxhtc3的数据手册,读取命…...

期刊论文写作之word模板

一、zotero参考文献使用 下载zotero软件,请搜索相关帖子或者小破站即可; 把pdf拖到zotero软件里面,直接拉进去; 下面建立一个word演示: 1.导入pdf点击红框部分,根据期刊要求选择参考文献样式&#xff0…...

雷池社区版OPEN API使用教程

OPEN API使用教程 新版本接口支持API Token鉴权 接口文档官方没有提供,有需要可以自行爬取,爬了几个,其实也很方便 使用条件 需要使用默认的 admin 用户登录才可见此功能版本需要 > 6.6.0 使用方法 1.在系统管理创建API TOKEN 2.发…...

LSTM(Long Short-Term Memory,长短期记忆网络)在高端局效果如何

lstm 杂乱数据分析 LSTM(Long Short-Term Memory,长短期记忆网络)在高端局,即复杂的机器学习和深度学习应用中,展现出了其独特的优势和广泛的应用价值。以下是对LSTM在高端局中的详细解析: 一、LSTM的优势…...

模组操作宝典:4种关机重启技巧,让你的设备运行无忧

今天我说的是关于关机重启技巧。 给4G模组VBAT断电关机,模组关机前未能及时退出当前基站,会有什么影响呢? 基站会误以为设备还在线,下次开机仍会拿着上次驻网信息去连基站。基站一看,上次链接还在——认为你是非法设…...

利用API接口实现旺店通和金蝶系统的无缝数据对接

旺店通销售出库对接金蝶销售订单(线下)的技术实现 在企业日常运营中,数据的高效流转和准确对接是确保业务顺畅运行的关键。本文将聚焦于一个具体案例:如何通过轻易云数据集成平台,实现旺店通企业奇门的数据无缝对接到金蝶云星空系统。我们将…...

热题100(hash)

热题100&#xff08;Hash&#xff09; 三道题目 1.两数之和&#xff08;√&#xff09; 49.字母异位词分组&#xff08;题解&#xff09; 128.最长连续序列(题解) 思路 第1题简单hash映射&#xff0c;O(n) 第49题,关键点在于Hashmap的形式&#xff0c;‘HashMap<Stri…...

Ubuntu下Mysql修改默认存储路径

首先声明&#xff0c;亲身经验&#xff0c;自己实践&#xff0c;网上百度了好几个帖子&#xff0c;全是坑&#xff0c;都TMD的不行&#xff0c;修改各种配置文件&#xff0c;就是服务起不来&#xff0c;有以下几种配置文件需要修改 第一个文件/etc/mysql/my.cnf 这个文件是存…...

LVGL移植教程(超详细)——基于GD32F303X系列MCU

版本&#xff1a;LVGL Kernel V8.3.0&#xff0c;运行压力测试Demo Stress首先放一张最终Stress Demo 运行图&#xff1a; 一、准备 1. GD32 Keil工程 准备任意一个屏幕可以正常显示的GD32工程&#xff1a; 2. LVGL源码 最新版现在已经是V9.2了&#xff0c;这里我选择了…...

《计算机原理与系统结构》学习系列——处理器(中)

系列文章目录 目录 流水线数据通路与控制概述5个流水级指令周期与流水级 流水线性能流水线时钟周期的长度T和数量cycles流水线性能 流水线数据通路流水线寄存器流水线分析图形化流水线流水线控制 流水线数据通路与控制 概述 5个流水级 指令周期与流水级 单周期实现中&#x…...

深入解析 OceanBase 数据库中的局部索引和全局索引

深入解析 OceanBase 数据库中的局部索引和全局索引 引言 在分布式数据库中&#xff0c;索引的设计对于优化查询性能至关重要。OceanBase 作为一款高性能的分布式关系数据库&#xff0c;支持局部索引和全局索引两种索引类型。理解这两种索引的特点和适用场景&#xff0c;对于数…...

2024防晒衣市场社媒营销洞察报告

2024年&#xff0c;硬防晒已经从单一的户外场景&#xff0c;扩展到通勤、外出游玩、穿搭等更多场景&#xff0c;多样化的需求导致的消费群体不断扩大&#xff0c;“防晒经济”迎来自己的主场时刻。 当前&#xff0c;防晒衣不仅需要满足不用场景的灵活切换&#xff0c;还要满足多…...

【Ubuntu20.04 Visual Studio Code安装】【VSCODE】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、打开VSCOE官网二、下载VSODE的Ubuntu版本三、安装VSCODE软件包四、导入工作空间(添加工作空间目录)五、安装插件&#xff1a;1.安装简体中文包2.安装ros插件…...

贪心算法day(1)

1.将数组和减半的最少操作次数 链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;创建大跟堆将最大的数进行减半 注意点&#xff1a;double t queue.poll()会将queue队列数字减少一个后再除以2&#xff0c;queue.offer(queue.poll(&#xff09;/…...

窗口函数sql使用总结

一、开窗 基础知识&#xff1a;窗口分析函数 &#xff08;1&#xff09;LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值 第一个参数为列名&#xff0c;第二个参数为往上第n行&#xff08;可选&#xff0c;默认为1&#xff09;&#xff0c;第三个参数为默认值&#xff08;当往…...

python单因素分析

写了个简易小程序实现&#xff0c;以后用的时候直接复制就行&#xff1a; import numpy as np from scipy.stats import fdatas [[65,60,69,79,38,68,54,67,68,43],[74,71,58,49,58,49,48,68,56,47],[22,34,24,21,20,36,36,31,28,33] ] a 0.05def get_mean_var(data):data_m…...

「C/C++」C++ STL容器库 之 std::list 双向链表容器

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...