【雕爷学编程】Arduino动手做(186)---WeMos ESP32开发板9

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 ESP32 WiFi蓝牙4MB4闪存UNO R32开发板模块 UNO D1 R32(ESP32)开
发板 兼容Arduino

在这里插入图片描述
知识点:ESP32芯片

(包括:ESP32- d0wd、ESP32- d0wdq6、ESP32- d2wd、ESP32- s0wd)集成了Wi-Fi和双模式蓝牙。根据型号差异,ESP32包含一个或两个低功耗Xtensa®32位LX6微处理器(s),最大时钟速度240 MHz(通常是160 MHz)和Xtensa RAM / ROM,本地内存和JTAG接口。

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

处理器:
主处理器: Tensilica Xtensa 32位LX6微处理器
核心: 2 或 1(取决于变化)除ESP32-S0WD为单核外,ESP32系列所有芯片均为双核。
时钟频率:高达 240 MHz
性能:高达 600 DMIPS
超低功耗协处理器: 允许您在深度睡眠时进行 ADC 转换、计算和电平阈值。
无线连接:
的Wi-Fi: 802.11 B / G / N / E / I(802.11n标准@ 2.4GHz的高达150兆比特/秒)
蓝牙: v4.2 BR/EDR 和蓝牙低功耗 (BLE)
记忆:
内部存储器:
ROM: 448 KiB用于启动和核心功能。
SRAM: 520 KiB用于数据和指令。
RTC 快速 SRAM: 8 KiB用于从深度睡眠模式进行 RTC 启动期间的数据存储和主 CPU。
RTC 慢速 SRAM: 8 KiB用于深度睡眠模式下的协处理器访问。
电子保险丝: 1 Kibit其中 256 位用于系统(MAC 地址和芯片配置),其余 768 位保留用于客户应用,包括 Flash-Encryption 和 Chip-ID。
嵌入式闪存:Flash 通过 ESP32-D2WD 和 ESP32-PICO-D4 上的 IO16、IO17、SD_CMD、SD_CLK、SD_DATA_0 和 SD_DATA_1 内部连接。
0 MiB(ESP32-D0WDQ6、ESP32-D0WD 和 ESP32-S0WD 芯片)
2 MiB(ESP32-D2WD 芯片)
4 MiB(ESP32-PICO-D4 SiP 模块)
外部闪存和 SRAM: ESP32 最多支持四个 16 MiB 外部 QSPI闪存和 SRAM,具有基于 AES 的硬件加密,以保护开发人员的程序和数据。ESP32 可以通过高速缓存访​​问外部 QSPI flash 和 SRAM。
高达 16 MiB 的外部闪存被内存映射到 CPU 代码空间,支持 8 位、16 位和 32 位访问。支持代码执行。
多达 8 MiB 的外部闪存/SRAM 存储器映射到 CPU 数据空间,支持 8 位、16 位和 32 位访问。闪存和 SRAM 支持数据读取。SRAM 支持数据写入。
带有嵌入式 flash 的 ESP32 芯片不支持外部 flash 和外设之间的地址映射。
外设输入/输出:带有 DMA 的丰富外设接口,包括电容式触摸、ADC(模数转换器)、DAC(数模转换器)、I²C(内部集成电路)、UART(通用异步接收器/发送器) )、CAN 2.0(控制器局域网)、SPI(串行外设接口)、I²S(集成 IC 间声音)、RMII(简化的媒体独立接口)、PWM(脉宽调制)等。
安全:
支持 IEEE 802.11 标准安全功能,包括 WFA、WPA/WPA2 和 WAPI
安全启动
闪存加密
1024位OTP,客户最高768位
加密硬件加速:AES、SHA-2、RSA、椭圆曲线加密(ECC)、随机数生成器(RNG)

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
实验接脚:2脚为板载LED,4脚接电位器OUT

实验开源代码

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十七:Wemos D1 R32 ESP32开发板项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)实验接脚:2脚为板载LED,4脚接电位器OUT
*/#if CONFIG_FREERTOS_UNICORE
#define ARDUINO_RUNNING_CORE 0
#else
#define ARDUINO_RUNNING_CORE 1
#endif#ifndef LED_BUILTIN
#define LED_BUILTIN 2
#endif// 为 Blink 和 AnalogRead 定义两个任务
void TaskBlink( void *pvParameters );
void TaskAnalogReadA3( void *pvParameters );// the setup function runs once when you press reset or power the board
void setup() {// initialize serial communication at 115200 bits per second:Serial.begin(115200);// Now set up two tasks to run independently.xTaskCreatePinnedToCore(TaskBlink,  "TaskBlink"   // A name just for humans,  1024  // This stack size can be checked & adjusted by reading the Stack Highwater,  NULL,  2  // Priority, with 3 (configMAX_PRIORITIES - 1) being the highest, and 0 being the lowest.,  NULL ,  ARDUINO_RUNNING_CORE);xTaskCreatePinnedToCore(TaskAnalogReadA3,  "AnalogReadA3",  1024  // Stack size,  NULL,  1  // Priority,  NULL ,  ARDUINO_RUNNING_CORE);// Now the task scheduler, which takes over control of scheduling individual tasks, is automatically started.
}void loop()
{// Empty. Things are done in Tasks.
}/*--------------------------------------------------*/
/*---------------------- Tasks ---------------------*/
/*--------------------------------------------------*/void TaskBlink(void *pvParameters)  // This is a task.
{(void) pvParameters;/*BlinkTurns on an LED on for one second, then off for one second, repeatedly.If you want to know what pin the on-board LED is connected to on your ESP32 model, checkthe Technical Specs of your board.
*/// initialize digital LED_BUILTIN on pin 13 as an output.pinMode(LED_BUILTIN, OUTPUT);for (;;) // A Task shall never return or exit.{digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)vTaskDelay(1000);  // one tick delay (15ms) in between reads for stabilitydigitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOWvTaskDelay(1000);  // one tick delay (15ms) in between reads for stability}
}void TaskAnalogReadA3(void *pvParameters)  // This is a task.
{(void) pvParameters;/*AnalogReadSerialReads an analog input on pin A4, prints the result to the serial monitor.Graphical representation is available using serial plotter (Tools > Serial Plotter menu)Attach the center pin of a potentiometer to pin A3, and the outside pins to +5V and ground.This example code is in the public domain.
*/for (;;){// read the input on analog pin 4:int sensorValueA4 = analogRead(4);// print out the value you read:Serial.println(sensorValueA4);vTaskDelay(100);  // one tick delay (15ms) in between reads for stability} 
}

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
实验接脚:2脚为板载LED,4脚接电位器OUT

项目串口返回情况

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)

实验串口绘图器返回情况

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
实验接脚:2脚为板载LED,4脚接电位器OUT

实验场景图

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十六:打印 ESP32 上次复位原因

实验开源代码

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十七:Wemos D1 R32 ESP32开发板项目二十六:打印 ESP32 上次复位原因
*/#include <rom/rtc.h>#define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */void print_reset_reason(RESET_REASON reason){switch ( reason) {case 1 : Serial.println ("POWERON_RESET"); break;         /**<1,  Vbat power on reset*/case 3 : Serial.println ("SW_RESET"); break;              /**<3,  Software reset digital core*/case 4 : Serial.println ("OWDT_RESET"); break;            /**<4,  Legacy watch dog reset digital core*/case 5 : Serial.println ("DEEPSLEEP_RESET"); break;       /**<5,  Deep Sleep reset digital core*/case 6 : Serial.println ("SDIO_RESET"); break;            /**<6,  Reset by SLC module, reset digital core*/case 7 : Serial.println ("TG0WDT_SYS_RESET"); break;      /**<7,  Timer Group0 Watch dog reset digital core*/case 8 : Serial.println ("TG1WDT_SYS_RESET"); break;      /**<8,  Timer Group1 Watch dog reset digital core*/case 9 : Serial.println ("RTCWDT_SYS_RESET"); break;      /**<9,  RTC Watch dog Reset digital core*/case 10 : Serial.println ("INTRUSION_RESET"); break;      /**<10, Instrusion tested to reset CPU*/case 11 : Serial.println ("TGWDT_CPU_RESET"); break;      /**<11, Time Group reset CPU*/case 12 : Serial.println ("SW_CPU_RESET"); break;         /**<12, Software reset CPU*/case 13 : Serial.println ("RTCWDT_CPU_RESET"); break;     /**<13, RTC Watch dog Reset CPU*/case 14 : Serial.println ("EXT_CPU_RESET"); break;        /**<14, for APP CPU, reseted by PRO CPU*/case 15 : Serial.println ("RTCWDT_BROWN_OUT_RESET"); break; /**<15, Reset when the vdd voltage is not stable*/case 16 : Serial.println ("RTCWDT_RTC_RESET"); break;     /**<16, RTC Watch dog reset digital core and rtc module*/default : Serial.println ("NO_MEAN");}
}void verbose_print_reset_reason(RESET_REASON reason){switch ( reason){case 1  : Serial.println ("Vbat power on reset"); break;case 3  : Serial.println ("Software reset digital core"); break;case 4  : Serial.println ("Legacy watch dog reset digital core"); break;case 5  : Serial.println ("Deep Sleep reset digital core"); break;case 6  : Serial.println ("Reset by SLC module, reset digital core"); break;case 7  : Serial.println ("Timer Group0 Watch dog reset digital core"); break;case 8  : Serial.println ("Timer Group1 Watch dog reset digital core"); break;case 9  : Serial.println ("RTC Watch dog Reset digital core"); break;case 10 : Serial.println ("Instrusion tested to reset CPU"); break;case 11 : Serial.println ("Time Group reset CPU"); break;case 12 : Serial.println ("Software reset CPU"); break;case 13 : Serial.println ("RTC Watch dog Reset CPU"); break;case 14 : Serial.println ("for APP CPU, reseted by PRO CPU"); break;case 15 : Serial.println ("Reset when the vdd voltage is not stable"); break;case 16 : Serial.println ("RTC Watch dog reset digital core and rtc module"); break;default : Serial.println ("NO_MEAN");}
}void setup() {// put your setup code here, to run once:Serial.begin(115200);delay(2000);Serial.println("CPU0 reset reason:");print_reset_reason(rtc_get_reset_reason(0));verbose_print_reset_reason(rtc_get_reset_reason(0));Serial.println("CPU1 reset reason:");print_reset_reason(rtc_get_reset_reason(1));verbose_print_reset_reason(rtc_get_reset_reason(1));// Set ESP32 to go to deep sleep to see a variation// in the reset reason. Device will sleep for 5 seconds.esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);Serial.println("Going to sleep");esp_deep_sleep(5 * uS_TO_S_FACTOR);
}void loop() {// put your main code here, to run repeatedly:
}/*Example Serial Log:====================rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)configsip: 0, SPIWP:0x00clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00mode:DIO, clock div:1load:0x3fff0008,len:8load:0x3fff0010,len:160load:0x40078000,len:10632load:0x40080000,len:252entry 0x40080034CPU0 reset reason:RTCWDT_RTC_RESETRTC Watch dog reset digital core and rtc moduleCPU1 reset reason:EXT_CPU_RESETfor APP CPU, reseted by PRO CPUGoing to sleepets Jun  8 2016 00:22:57rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)configsip: 0, SPIWP:0x00clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00mode:DIO, clock div:1load:0x3fff0008,len:8load:0x3fff0010,len:160load:0x40078000,len:10632load:0x40080000,len:252entry 0x40080034CPU0 reset reason:DEEPSLEEP_RESETDeep Sleep reset digital coreCPU1 reset reason:EXT_CPU_RESETfor APP CPU, reseted by PRO CPUGoing to sleepets Jun  8 2016 00:22:57rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)configsip: 0, SPIWP:0x00clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00mode:DIO, clock div:1load:0x3fff0008,len:8load:0x3fff0010,len:160load:0x40078000,len:10632load:0x40080000,len:252entry 0x40080034CPU0 reset reason:DEEPSLEEP_RESETDeep Sleep reset digital coreCPU1 reset reason:EXT_CPU_RESETfor APP CPU, reseted by PRO CPUGoing to sleep
*/

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十六:打印 ESP32 上次复位原因

项目串口返回情况
在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十七:实现RGB-LED颜色的变换
实验接脚:LED R接14,B接27,G接16

实验开源代码

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十七:Wemos D1 R32 ESP32开发板项目二十七:实现RGB-LED颜色的变换实验接脚:LED R接14,B接27,G接16
*/uint8_t ledR = 14;
uint8_t ledG = 27;
uint8_t ledB = 16;void setup(){Serial.begin(115200);delay(10);ledcAttachPin(ledR, 1); //引脚的通道ledcAttachPin(ledG, 2);ledcAttachPin(ledB, 3);ledcSetup(1, 12000, 8); // 12 kHz PWM,8位的分辨率ledcSetup(2, 12000, 8);ledcSetup(3, 12000, 8);
}void loop(){//红色ledcWrite(1, 0);ledcWrite(2, 255);ledcWrite(3, 255);delay(2000);//绿色ledcWrite(1, 255);ledcWrite(2, 0);ledcWrite(3, 255);delay(2000);//蓝色ledcWrite(1, 255);ledcWrite(2, 255);ledcWrite(3, 0);delay(2000);
}

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十七:实现RGB-LED颜色的变换
实验接脚:LED R接14,B接27,G接16

Arduino实验场景图
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述

Flutter游戏引擎Flame系列笔记 1.Flame引擎概述 - 文章信息 - Author: 李俊才(jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/132119035 【介绍】…

03.利用Redis实现缓存功能---解决缓存穿透版

学习目标&#xff1a; 提示&#xff1a;学习如何利用Redis实现添加缓存功能解决缓存穿透版 学习产出&#xff1a; 缓存穿透讲解图&#xff1a; 解决方案&#xff1a; 采用缓存空对象采用布隆过滤器 解决方案流程图&#xff1a; 1. 准备pom环境 <dependency><gro…

MapReduce基础原理、MR与MPP区别

MapReduce概述 MapReduce&#xff08;MR&#xff09;本质上是一种用于数据处理的编程模型&#xff1b;MapReduce用于海量数据的计算&#xff0c;HDFS用于海量数据的存储&#xff08;Hadoop Distributed File System&#xff0c;Hadoop分布式文件系统&#xff09;。Hadoop MapR…

uniapp:图片验证码检验问题处理

图形验证码功能实现 uniapp&#xff1a;解决图形验证码问题及利用arraybuffer二进制转base64格式图片&#xff08;后端传的图片数据形式&#xff1a;x00\x10JFIF\x00\x01\x02\x00…&#xff09;_❆VE❆的博客-CSDN博客 UI稿&#xff1a; 需求&#xff1a;向后端请求验证码图片&…

arcgis--网络分析(理论篇)

1、定义概念 &#xff08;1&#xff09;网络&#xff1a;由一系列相互联通的点和线组成&#xff0c;用来描述地理要素&#xff08;资源&#xff09;的流动情况。 &#xff08;2&#xff09;网络分析&#xff1a;对地理网络&#xff08;如交通网络、水系网络&#xff09;&…

RTT(RT-Thread)时钟管理

目录 时钟管理 时钟节拍 RTT工程目录结构介绍 配置文件&#xff1a;rtconfig.h 获取系统节拍 获取系统节拍数函数 实例 定时器 RT_Thread定时器介绍 定时器源码分析&#xff08;了解即可&#xff09; rt_system_timer_init (硬件定时器初始化) rt_system_timer_thr…

安全防护,保障企业图文档安全的有效方法

随着企业现在数据量的不断增加和数据泄露事件的频发&#xff0c;图文档的安全性成为了企业必须高度关注的问题。传统的纸质文件存储方式已不适应现代企业的需求&#xff0c;而在线图文档管理成为了更加安全可靠的数字化解决方案。那么在在线图文档管理中&#xff0c;如何采取有…

Windows测试模式打开/关闭 C++ Windows驱动开发

Windows测试模式打开 管理员身份运行CMD 2.输入&#xff1a;bcdedit /set testsigning on 重启计算机 右下角显示&#xff1a; 测试模式成功开启 Windows测试模式关闭 同理&#xff0c;第二步修改为&#xff1a; 重启后右下角&#xff1a; 没有测试模式显示&#xff0c;关闭…

类与对象【中】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb;类的默认6个成员函数&#x1f449;&#x1f3fb;构造…

【linux--->数据链路层协议】

文章目录 [TOC](文章目录) 一、数据链路层协议概念二、以太网帧格式1.字段分析 三、局域网通信原理四、ARP协议1.结构2.作用3.ARP通信过程4.ARP协议相关命令 五、局域网内中间人原理六、DNS系统(域名系统)1.域名概念2.DNS系统组成3.DNS协议3.浏览器输入域名后的通信过程4.dig工…

Linux 创建子进程

文章目录 前言一、进程&#xff0c;线程&#xff0c;程序 区分二、创建子进程三、创建多个进程1. 获取进程号2. 循环创建多个进程 四、进程工具。1. ps 查看当前进程.2. kill 进程终止. 总结 前言 在计算机科学中&#xff0c;进程&#xff08;Process&#xff09;、线程&#…

ChatGPT已打破图灵测试,新的测试方法在路上

生信麻瓜的 ChatGPT 4.0 初体验 偷个懒&#xff0c;用ChatGPT 帮我写段生物信息代码 代码看不懂&#xff1f;ChatGPT 帮你解释&#xff0c;详细到爆&#xff01; 如果 ChatGPT 给出的的代码不太完善&#xff0c;如何请他一步步改好&#xff1f; 全球最佳的人工智能系统可以通过…

删除这4个文件夹,流畅使用手机无忧

在现代社会中&#xff0c;手机已经成为我们生活中不可或缺的一部分。然而&#xff0c;随着使用时间的增长&#xff0c;我们可能会遇到手机卡顿和内存不足的问题&#xff0c;让我们感到十分困扰。手机卡顿不仅影响使用体验&#xff0c;还可能导致应用程序运行缓慢&#xff0c;甚…

python绿色版运行程序,python 绿色版免安装

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python绿色版运行程序&#xff0c;python 绿色版免安装&#xff0c;今天让我们一起来看看吧&#xff01; 软件简介 Python3.7.0 是一种被广大从业者广泛使用的通用型设计语言。该软件提供了丰富全面的模块&#xff0c;并…

MFC第二十七天 通过动态链表实现游戏角色动态增加、WM_ERASEBKGND背景刷新的原理、RegisterClass注册窗口与框架程序开发

文章目录 通过动态链表实现游戏角色动态增加CMemoryDC.hCFlashDlg.hCFlashDlg.cpp WM_ERASEBKGND背景刷新的原理RegisterClass注册窗口与框架程序开发CFrameRegister 通过动态链表实现游戏角色动态增加 CMemoryDC.h #pragma once#include "resource.h"/*内存DC类简介…

6.s081/6.1810(Fall 2022)Lab3: page tables

文章目录 前言其他篇章参考链接0. 前置环境1. Speed up system calls (easy)1.1 简单分析1.2 映射1.3 页分配1.4 页释放1.5 测试 2. Print a page table (easy)2.1 简单分析2.2 实现2.3 测试 3. Detect which pages have been accessed (hard)3.1 简单分析3.2 实现3.2.1 获取参…

8.物联网操作系统之事件标志组

。事件标志组定义 FreeRTOS事件标志组介绍 FreeRTOS事件标志组工作原理 一。事件标志组定义 信号量信号量只能实现任务与单个事件或任务间的同步。但是某些任务可能会需要与多个事件或任务进行同步&#xff0c;此时就可以使用事件标志组来解决。事件标志组能够实现某个任务与…

【PostgreSQL】系列之 一 用户创建和授权(三)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…

如何在 Android 上恢复已删除的视频|快速找回丢失的记忆

想知道是否有任何成功的方法可以从 Android 手机中检索已删除的视频&#xff1f;好吧&#xff0c;本指南将向您展示分步说明&#xff0c;让您轻松从手机中找回丢失的视频文件&#xff01; 您是否不小心从 Android 智能手机中删除了珍贵的生日视频&#xff1f;难道是无处可寻吗…

宝塔面板Mysql数据库无法启动(已解决)

1、错误排查 Mysql 无法正常启动直接使用官方提供的脚本检查出错 wget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.shwget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.sh 打印出…