立创·天空星开发板-GD32F407VE-环境搭建

本文以 立创·天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。

立创·天空星开发板-GD32F407VET6-环境搭建

  • 单片机
    • ARM
      • ARM内核系列
      • Cortex-M系列
      • 常用ARM芯片厂商
    • GD32
      • GD32的产品系列
      • 开发板
        • 开发板资源、尺寸标注图
        • 设计图纸
      • GD32F407
    • Keil ARM 安装
      • 下载地址
      • 安装步骤
        • GD32开发包安装
    • 点灯仪式
      • 排错

单片机

单片机(Microcontroller)是一种集成电路芯片,它集成了处理器、存储器、输入/输出接口以及各种功能模块于一身。

  1. 总线

总线是一组导线,连接了单片机中的各个部分,如处理器、存储器和输入/输出接口。它负责在各个部件之间传递信息和数据。常见的总线有地址总线、数据总线和控制总线。

  • 地址总线:用于传递存储器和外设的地址信息。
  • 数据总线:用于传输实际的数据。
  • 控制总线:用于传递控制信号,如读写操作。

总线与外设通信:单片机通过总线与外设进行通信。当处理器需要与外设通信时,它会将外设的地址放在地址总线上,将要传输的数据放在数据总线上,并通过控制总线发送控制信号,以实现对外设的读写操作。

  1. GPIO(General Purpose Input/Output,通用输入输出):

GPIO,全称为“通用输入/输出”(General Purpose Input/Output),是计算机系统中用于与外部世界进行数字通信的一种接口标准。它允许硬件和软件通过电信号来交换数据,控制外部设备或接收外部事件。GPIO 模式有:

模式性质
浮空输入数字输入
上拉输入数字输入
下拉输入数字输入
模拟输入模拟输入
开漏输出数字输出
推挽输出数字输出
复用开漏输出数字输出
复用推挽输出数字输出

GPIO通常用于连接各种外设,如按钮、LED灯、传感器、马达、继电器等,以便与计算机系统进行交互。

  1. 通信协议

单片机与外设之间通信的方式有很多,通常需要遵循一定的协议。以下是一些常见的通信协议:
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器):这是一种异步串行通信协议,用于在单片机与外设之间传输数据。UART通信需要两根线:一根用于发送数据(TX),另一根用于接收数据(RX)。
SPI(Serial Peripheral Interface,串行外设接口):SPI是一种同步串行通信协议,使用主从模式进行通信。它需要四根线:时钟线(SCLK)、主设备数据输出线(MOSI)、主设备数据输入线(MISO)和片选线(SS)。
I2C(Inter-Integrated Circuit,内部集成电路总线):I2C是一种同步串行通信协议,使用主从模式进行通信。它只需要两根线:串行数据线(SDA)和串行时钟线(SCL)。

ARM

ARM是一种芯片架构,由英国的ARM Holdings公司开发和授权,被广泛应用于各种嵌入式系统、移动设备和消费电子产品中。ARM架构被设计成低功耗、高性能、可定制化的特点,能够满足各种应用场景下的需求。ARM架构主要设计了以下几个部分内容:

  1. 指令集架构(Instruction Set Architecture):

ARM架构是基于精简指令集计算机(RISC)架构设计的,其指令集具有高效的指令执行速度、较小的代码大小和低功耗等特点。ARM架构提供了多个指令集版本,包括32位和64位,不同版本的指令集支持不同的特性和功能,以适应不同的应用场景。

  1. 存储器架构(Memory Architecture):

ARM架构的存储器架构包括内存、闪存、EEPROM等类型,它们提供了不同的存储特性和使用场景。ARM架构还支持虚拟内存技术,通过虚拟地址和物理地址映射实现了对于内存的更高效的利用,提高了系统的运行效率和稳定性。

  1. 总线架构(Bus Architecture):

ARM架构的总线架构包括数据总线、地址总线和控制总线等,它们提供了连接CPU、存储器、外设等各个部件之间的通信和数据传输。ARM架构的总线架构是高度灵活和可扩展的,可以适应不同的应用场景和系统需求。

  1. 处理器架构(Processor Architecture):

ARM架构的处理器架构包括中央处理器(CPU)、图形处理器(GPU)、数字信号处理器(DSP)等。ARM架构的处理器架构具有高性能、低功耗、低成本等特点,可以适应不同的应用场景和设备类型。

  1. 安全架构(Security Architecture):

ARM架构的安全架构提供了各种安全功能和特性,包括硬件加密、安全存储、安全启动等。ARM架构的安全架构可以保护系统的安全性和稳定性,防止恶意攻击和数据泄露等安全问题。

ARM内核系列

ARM公司设计的处理器内核有很多种,根据不同的应用场景和性能需求,可以选择不同的内核进行设计。以下是一些常见的ARM内核:

  1. Cortex-A系列:面向高性能应用领域的内核,主要用于移动设备、智能终端、高端嵌入式系统等领域。Cortex-A系列内核具有高性能、高可扩展性、丰富的外设接口和低功耗等优点。
  2. Cortex-R系列:面向实时应用领域的内核,主要用于工业控制、汽车电子、航空航天等领域。Cortex-R系列内核具有高可靠性、低延迟、强实时性和硬件保护等特点。
  3. Cortex-M系列:面向低功耗嵌入式系统的内核,主要用于智能传感器、便携式设备、家用电器等领域。Cortex-M系列内核具有低功耗、低成本、高效能、易于开发等特点。
  4. ARM7系列:面向嵌入式系统领域的内核,主要用于控制器、存储设备、安全芯片等领域。ARM7系列内核具有低成本、低功耗、高集成度、易于开发等特点。
  5. ARM9系列:面向嵌入式系统领域的内核,主要用于数字音视频、通信、网络设备等领域。ARM9系列内核具有高性能、多媒体处理能力、丰富的外设接口和易于扩展等特点。

Cortex-M系列

Cortex-M系列是ARM公司推出的一种面向低功耗嵌入式系统的处理器内核,主要用于智能传感器、便携式设备、家用电器等领域。Cortex-M系列内核具有低功耗、低成本、高效能、易于开发等特点,是目前嵌入式系统领域最受欢迎的处理器内核之一。根据不同的性能和功耗需求,Cortex-M系列内核又分为以下几类:

  1. Cortex-M0系列:面向低功耗、成本敏感型应用,适用于智能传感器、安全芯片、家用电器等领域。Cortex-M0系列内核的主频通常在10MHz-50MHz之间,具有低功耗、低成本、易于开发等特点。
  2. Cortex-M3系列:面向高性能、实时应用,适用于工业控制、汽车电子、医疗设备等领域。Cortex-M3系列内核的主频通常在50MHz-120MHz之间,具有高性能、强实时性和硬件保护等特点。
  3. Cortex-M4系列:基于Cortex-M3系列内核,增加了DSP和浮点运算单元,适用于音视频处理、图像处理、控制算法等领域。Cortex-M4系列内核的主频通常在80MHz-240MHz之间,具有高性能、DSP(Digital Signal Processing)和浮点运算能力等特点。
  4. Cortex-M7系列:基于Cortex-M4系列内核,增加了双精度浮点运算单元和指令预取器等特性,适用于音视频编解码、高速通信等领域。Cortex-M7系列内核的主频通常在200MHz-400MHz之间,具有高性能、低延迟和高精度的浮点运算能力等特点。

常用ARM芯片厂商

国内/国外公司知名芯片官网
国外意法半导体STM32https://www.st.com/
国外恩智浦LPC系列,K系列,KL系列,i.MX系列https://www.nxp.com/
国外瑞萨电子RA系列https://www.renesas.cn
国外德州仪器AM系列https://www.ti.com/
国外高通Qualcommhttps://www.qualcomm.com/
国内兆易创新GD32系列https://www.gigadevice.com.cn/
国内国民技术N32系列https://www.nationstech.com/
国内武汉芯源CW32https://www.whxy.com/
国内深圳航顺HK32https://www.hsxp-hk.com/
国内华大半导体HC32https://www.hdsc.com.cn/
国内瑞芯微RK系列(rk3568)http://www.rock-chips.com/
国内全志科技R系列,V系列,A系列https://www.allwinnertech.com/
国内联发科MTKhttps://www.mediatek.com/

GD32

GD32是一款由中国芯片制造商GigaDevice推出的32位ARM Cortex-M微控制器系列。

它们与 STMicroelectronics 的STM32系列微控制器非常相似,使用相同的 ARM Cortex-M 内核,提供广泛的外设和功能,包括各种通信接口、模拟输入输出、数字输入输出、定时器、中断控制器等等。

GD32的产品系列

L系列:基于Cortex-M23内核,主要特点是低功耗和低成本,适用于高端家电、消费电子、医疗设备、工业控制等领域。
F系列:基于Cortex-M4内核,主要特点是高性能和丰富的外设资源,适用于高端消费电子、医疗设备、工业控制、安防监控等领域。
E系列:基于Cortex-M0+内核,主要特点是超低功耗和小尺寸,适用于物联网、可穿戴设备、智能家居等领域。
V系列:基于Cortex-M0内核,主要特点是低功耗和高性价比,适用于低端家电、消费电子、LED灯等领域。
C系列:基于Cortex-M4内核,主要特点是高性能和低功耗,适用于智能家居、安防监控、工业控制等领域。
W系列:基于Cortex-M33内核,主要特点是超低功耗和高性价比,适用于物联网、可穿戴设备等领域。
A系列:基于Cortex-A7内核,主要特点是高性能和丰富的外设资源,适用于高端工业控制、嵌入式计算机等领域。

开发板

本文以 立创·天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。

开发板资源、尺寸标注图

开发板资源、尺寸标注图

设计图纸

层次总框图
详细设计图:https://pro.lceda.cn/editor#id=1949206d8e694271bd8ab6f068e260c2

GD32F407

GD32F4xx系列器件是基于Arm® Cortex®-M4处理器的32位通用微控制器。
存储器的组织采用了哈佛结构,预先定义的存储器映射和高达4 GB的存储空间,充分保证了系统的灵活性和可扩展性。

  • GD32F405/407为Cortex®-M4互联型
  • 512K~3072K Flash,192K SRAM
  • 高达168MHz,支持FPU
  • 2.6~3.6V供电,5V容忍I/O
  • -40℃~85 ℃工业级温度范围
  • 全系列硬件管脚及软件兼容

Keil ARM 安装

Keil是一家嵌入式系统开发工具提供商,其主要产品是Keil MDK(Microcontroller Development Kit),是一款集成开发环境(IDE),支持多种芯片架构,包括ARM、C51、C251等,可以进行代码编辑、编译、调试、仿真等工作。

下载地址

keil社区版下载地址:https://www.keil.arm.com/mdk-community/
keil官方支持版下载地址:https://www.keil.com/download/product/

安装步骤

一般来说,一路点击下一步即可,如果需要自定义安装路径,有以下几点注意事项:

● 路径中一定不要有中文或空格路径
● Core路径要放到和C51相同的Keil路径(例如默认的C:\Keil_v5)
● 如果安装路径和C51不同,会导致C51项目无法直接双击打开
● 安装过程如提示有文件覆盖就点确认,进行覆盖
● Pack路径可以使用默认路径,也可以参考以下自定义路径结构

Core:D:\Program\Keil\KeilC51_v5\
Pack:D:\Program\Keil\KeilC51_v5\ARM\Packs

附上一张图,更加直观:

在这里插入图片描述

GD32开发包安装

GD32 开发包可以选择在线安装和离线安装两种方式

  1. 在线安装

打开 Keil, 点击 Pack Installer, 选择 GD32F407VE,然后点击安装,下图是已经安装过后的界面

再按安装开发包

  1. 离线安装

从官网下载 GD32F4XX AddOn 文件 进行安装,直接允许下载后的文件即可,它会自动定位到 Keil Arm 的包存储路径。需要注意的是,该文件放置的路径不要有特殊符号。例如

D:\Program\Keil\GigaDevice.GD32F4xx_DFP.3.2.0.pack

点灯仪式

创建一个项目,点亮开发板上的用户 LED 灯

  1. 下载 固件库文件

文件目录结构如下所示:

GD32F4xx_Firmware_Library_V3.2.0
├─Docs
│  ├─Schematic
│  └─User Guide
├─Examples
├─Firmware
│  ├─CMSIS
│  │  └─GD
│  │      └─GD32F4xx
│  │          ├─Include
│  │          └─Source
│  │              ├─ARM
│  │              └─IAR
│  ├─GD32F4xx_standard_peripheral
│  │  ├─Include
│  │  └─Source
│  └─GD32F4xx_usb_library
├─Template
│  ├─IAR_project
│  └─Keil_project
└─Utilities
  1. 新建项目,规划的目录结构如下:
GD32F407VE_01_LED
├─Driver
├─Firmware
│  ├─CMSIS
│  │  └─GD
│  │      └─GD32F4xx
│  │          ├─Include
│  │          └─Source
│  │              ├─ARM
│  │              └─IAR
│  ├─GD32F4xx_standard_peripheral
│  └─GD32F4xx_usb_library
├─Project
│  ├─Listings
│  └─Objects
└─User

不难理解的是,CMSIS(Cortex Microcontroller Software Interface Standard) 目录中存放的是固件抽象层的代码。

所以,在 CMSIS 目录存放的是 core_cm4.hcore_cm4_simd.hcore_cmFunc.hcore_cmInstr.h 这些头文件,它们为 Cortex-M 处理器系列定义了通用工具接口,使得开发人员可以为处理器和外设实现一致且简单的软件接口。

CMSIS\GD\GD32F4xx\ 目录中存放的是针对 CMSIS 中存放的抽象接口的具体实现,这些实现是根据不同的芯片来决定的。我们采用的是 GD32F407VE,故而,这些实现由兆易创新公司提供。

另外,SPL(Standard Peripheral Library)目录中存放的是 GD32 标准库文件。Project 目录就是 Keil 的工程目录,以及相关的临时文件。

设计好目录结构后,就可以将固件库中的模板代码拷贝到自己的工程中。

  • 将固件库中的 Firmware 完整拷贝到项目中,名称也是 Firmware
  • 将固件库中的 Template 中的代码拷贝到项目中的 User 中。包括:gd32f4xx_it.cgd32f4xx_libopt.hmain.hsystick.hgd32f4xx_it.hmain.csystick.c

创建好的项目结构如下:

项目结构
同时需要将文件设置到 Include Path 中,如下所示:
配置 Include Path

  1. 修改主时钟频率

打开 system_gd32f4xx.h 文件,将 __SYSTEM_CLOCK_240M_PLL_25M_HXTAL 注释,这个时钟配置代表主频是 240MHz,晶振频率为 25MHz,但 天空星开发板-GD32F407VET6 的主频是 168MHz,外部晶振是 8MHz,所以,需要将 __SYSTEM_CLOCK_168M_PLL_8M_HXTAL 注释解开。如下所示:
修改主频
4. 编写点灯代码

#include "gd32f4xx.h"
#include "systick.h"
#include <stdio.h>
#include "main.h"

void GPIO_config(void) {
    // 1. 时钟初始化
    rcu_periph_clock_enable(RCU_GPIOB);
    // 2. 配置GPIO 输入输出模式
    gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_2);
    // 3. 配置GPIO 模式的操作方式
    gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_2);
}

int main(void) {
    systick_config();
    GPIO_config();

    while(1) {
        // 设置PB2为高电平
        gpio_bit_set(GPIOB, GPIO_PIN_2);
        delay_1ms(1000);
        // 设置PB2为低电平
        gpio_bit_reset(GPIOB, GPIO_PIN_2);
        delay_1ms(1000);
    }
}
  1. 修改晶振频率值

从 main.c 文件打开 gd32f4xx.h 文件,
打开gd32f4xx.h 文件
将晶振的频率改成 8MHz
修改晶振频率

  1. 按 F8 键开始烧录,将程序烧录到开发板中,即可实现用户 LED 每隔一秒闪烁的效果。

排错

  1. 编译报错,提示找不到 led_spark 函数。

因为本项目是从固件库中的模板代码中复制的代码,可能会出现问题。
点击编译按钮后,发现会有一个报错信息,说找不到 led_spark 函数,定位到该函数在 gd32f4xx_it.c 的 SysTick_Handler 函数中。这个是触发中断后调用的函数,用不着它就将其删除即可。

  1. 烧录不了程序

检查是否是连接线是否正连接。同时在 Debug 的设置中使用 CMSIS-DAP Debugger 作为调试器。

在这里插入图片描述
在 Flash Download 中勾选 Reset and Run,使得烧录后直接运行。
在这里插入图片描述

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

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

相关文章

浏览器下载的文件为什么不允许我指定下载位置

文章目录 问题分析 问题 我们在做B端开发时&#xff0c;通常会遇到用户问道&#xff1a;我下载的文件为什么不能下载到指定位置让我手动去选择呢 分析 我们开发是基于浏览器做的开发&#xff0c;因此要遵循浏览器的限制条件 浏览器限制用户自定义下载地址的主要原因是出于…

Autoware 技术代码解读(三)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&#xff0c;并附带200G…

Nacos 2.x 系列【12】配置加密插件

文章目录 1. 前言2. 安装插件2.1 编译2.2 客户端2.3 服务端 3. 测试 1. 前言 为保证用户敏感配置数据的安全&#xff0c;Nacos提供了配置加密的新特性。降低了用户使用的风险&#xff0c;也不需要再对配置进行单独的加密处理。 前提条件&#xff1a; 版本:老版本暂时不兼容&…

【最新区块链论文录用资讯】CCF A—INFOCOM 2024 共17篇

Conference&#xff1a;IEEE International Conference on Computer Communications CCF level&#xff1a;CCF A Categories&#xff1a;计算机网络 Year&#xff1a;2024 Num&#xff1a;17 A Generic Blockchain-based Steganography Framework with High Capacity via …

openssh升级

原因&#xff1a;因为低版本出现了漏洞 过程&#xff1a; 此时&#xff0c;root不能登录。 修改/etc/pam.d/login 第2行前面加上#&#xff0c;保存退出 /etc/pam.d/remote 第2行前面加上#&#xff0c;保存退出 此时root可以通过telnet登录了 二、升级openssl和openssh 【L…

校园周边美食探索及分享平台,基于 SpringBoot+Vue+MySQL 开发的前后端分离的校园周边美食探索及分享平台设计实现

目录 一. 前言 二. 功能模块 2.1. 前台首页功能模块 2.2. 用户功能模块 2.3. 管理员功能模块 三. 部分代码实现 四. 源码下载 一. 前言 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起&#xff0…

深入分析 Android Activity (十一)

文章目录 深入分析 Android Activity (十一)1. Activity 的内存管理和优化1.1 内存泄漏的常见原因1.2 避免内存泄漏的方法1.3 内存泄漏检测工具 2. Activity 的配置变更处理2.1 处理配置变更2.2 保存和恢复状态2.3 使用 ViewModel 3. Activity 的测试3.1 单元测试3.2 UI 测试 4…

数据结构(三)栈 队列 数组

2024年5月26日一稿&#xff08;王道P78&#xff09; 栈 基本概念 基本操作 顺序存储结构 基本操作 共享栈 链式存储结构 队列 基本概念 顺序存储结构 循环队列 链式存储结构 基本操作 双端队列 栈和队列的应用 括号匹配 表达式求值 递归 层次遍历 计算机系统 数组和特殊矩阵…

绘唐app官方版绘唐3AI工具

绘唐app官方版绘唐3AI工具 激活授权方式&#xff1a;https://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encf 绘唐app是一款基于人工智能和摄影技术的应用程序&#xff0c;旨在帮助用户将照片转化为唐朝画风的艺术作品。 该应用程序使用先进的图像处理算法&#xf…

上海亚商投顾:沪指冲高回落 电力、电网产业链持续爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整&#xff0c;深成指、创业板指均跌超1%。电力、电网股再度爆发&#xff0c;众智科技、郴电国…

「西安邀请媒体参会」媒体宣发专访报道

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 一、媒体邀约目标 为提升活动的知名度和影响力&#xff0c;我们计划邀请西安地区的主流媒体、行业媒体以及网络媒体参与活动&#xff0c;并进行现场报道和专访。通过媒体的力量&#xff…

【云原生 | 59】Docker中通过docker-compose部署ELK

目录 1、组件介绍 2 、项目环境 2.1 各个环境版本 2.2 Docker-Compose变量配置 2.3 Docker-Compose服务配置 3、在Services中声明了四个服务 3.1 ElasticSearch服务 3.2 Logstash服务 3.3 Kibana服务 3.4 Filebeat服务 4、使用方法 4.1 方法一 4.2 方法二 5、启动…

解读makefile中的延迟变量与即时变量

在 Makefile 中&#xff0c;有两种类型的变量&#xff1a;即时变量&#xff08;immediate variable&#xff09;和延迟变量&#xff08;deferred variable&#xff09;。 它们在 Makefile 的执行过程中具有不同的特性和行为。 即时变量&#xff08;Immediate Variable&#x…

(C11) 泛型表达式

文章目录 ⭐语法⭐举例&#x1f6a9;判断对象类型&#x1f6a9;判断指针&#x1f6a9;函数重载&#x1f6a9;嵌套使用 END ⭐语法 Ref: 泛型选择 (C11 起) - cppreference.com 关键词&#xff1a; Genericdefault _Generic(控制表达式 , 关联列表) (C11 起) 关联列表 类型名:…

深度学习中文笔记.pdf

深度学习和机器学习应该如何入门呢&#xff1f;这是很多初学者经常提的问题&#xff0c;针对这个问题&#xff0c;相信很多过来人都会推荐吴恩达的在线课程。不过&#xff0c;由于是英文版本&#xff0c;就将很多人挡在了门外。 于是&#xff0c;在国内&#xff0c;以黄海广博士…

探索电商ERP平台的功能架构:实现高效运营的关键

在当今数字化时代&#xff0c;电子商务已经成为了商业运营的主流模式之一。为了应对日益激烈的市场竞争&#xff0c;企业需要借助先进的技术工具来提高运营效率和管理能力。在这篇博客中&#xff0c;我们将深入探讨电商ERP平台的功能架构&#xff0c;揭示其如何成为实现高效运营…

Qt for android : libusb在android中使用

简介 如何在Qt for Android中使用libusb&#xff0c; 其实libusb的文档里面都写的很清楚&#xff0c; 这里只是稍微做下整理。 libusb libusb github源码 libusb release的版本, 有编译好的静态 步骤 1. 下载libusb libusb v1.0.027 源码包 2. 整理提取libusb android使用源…

构建高效稳定的运维服务体系:技术架构解析与最佳实践

在当今数字化时代&#xff0c;运维服务对于企业的稳定运行和业务发展至关重要。本文将深入探讨运维服务的技术架构&#xff0c;介绍如何构建高效稳定的运维服务体系&#xff0c;并分享最佳实践。 ### 1. 概述 运维服务的技术架构是支撑整个运维体系的核心&#xff0c;它涵盖了…

数字孪生技术助力智慧园区建设

随着城市化进程的加速和科技创新的推动&#xff0c;城市面临着诸多挑战和机遇。如何提升城市的竞争力和可持续性&#xff0c;是一个亟待解决的问题。在这个背景下&#xff0c;智慧园区作为一种新型的城市发展模式&#xff0c;引起了越来越多的关注和探索。 什么是智慧园区&…

如何将天猫内容保存为PDF格式?详细步骤与实战解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;保存天猫内容的重要性 二、环境准备与工具安装 1. 安装必要的Python包…