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

搭建 Makefile+OpenOCD+CMSIS-DAP+Vscode arm-none-eabi-gcc 工程模板

STM32F407-GCC-Template

Arm-none-eabi-gcc + Makefile+OpenOCD+CMSIS-DAP+Vscode工程模板

一、本次环境搭建所用的软硬件

1)Windows or Linux (本文以Windows为主)

2)JLink、Daplink、Wch-Link烧录器

3)GNU Arm Embedded Toolchain交叉编译器

4)Mingw-w64 GCC for Windows 64

5)Debug 调试工具 openocd

6)Visual Studio Code

二、软件安装配置

  1. GNU Arm Embedded Toolchain交叉编译器

    进入arm开发者官网,往下滑动选择下载解压可用的ZIP压缩包文件

    下载链接: Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer

    在这里插入图片描述

    将下载好的压缩包文件解压在gcc-arm-none-eabi”文件夹中,并记住文件内“bin”文件的路径,后续需添加到系统环境变量Path中。

    在这里插入图片描述
    添加完环境变量后,进行测试,检测是否安装好。

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

  1. 安装Mingw-w64 GCC

    点击链接进入到SourceForge官网,往下翻可以找到很多版本的下载链接,选择红色框内型号即可,不同前后缀的具体差异请参考:

    MinGW gcc下载链接及sjlj、dwarf、seh异同以及gcc安装_AMDDMA的博客-CSDN博客_seh和sjlj

    下载链接:

    MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net

    在这里插入图片描述

    同样,将下载好的文件解压到“gcc-arm-none-eabi”文件夹下,记住目录下的“bin”文件路径
    在这里插入图片描述
    进入“bin”文件内找到“mingw32-make”应用程序文件,复制一份并重命名为“make”。这么做有利于在命令行执行make指令,而不是输入mingw32-make。
    在这里插入图片描述

​ 添加完环境变量后,进行测试,检测是否安装好。
在这里插入图片描述
在这里插入图片描述

3. 安装调试软件Download pre-built OpenOCD for Windows

默认安装Vscode,安装过程比较简单,参考其他文章。有了以上三个软件的支持,已经可以在VScode中编译并生成bin文件和hex文件了,但众所周知,程序员最大的工作是Debug,那就免不了需要一款调试软件了。

Debug常用的硬件有STLink、JLink,WCH-Link,DapLink.

Download pre-built OpenOCD for Windows下载链接:OpenOCD for Windows

在这里插入图片描述

同样将下载好的压缩包解压至“OpenOCD-20231002-0.12.0”,记住文件内“bin”文件的路径。
在这里插入图片描述
添加完环境变量后,进行测试,检测是否安装好。
在这里插入图片描述在这里插入图片描述

综上所述,基本的软件环境已经配置好。

三、STM32-GCC-Template工程配置

  1. 工程结构

    STM32-GCC-Template 使用的标准固件库开发,当然你可以使用HAL开发(这个不重要,有库就行了)

    在这里插入图片描述

   - ApplicationApplication/incApplication/src- BspLibrariesBspLibraries/incBspLibraries/src- FwlibLibrariesFwlibLibraries/CMSIS/IncludeFwlibLibraries/incFwlibLibraries/src- KernelKernel/incKernel/src- SystemLibrariesSystemLibraries/incSystemLibraries/src- Build//编译过程输出文件- toolstools/startup_stm32f407xx.stools/STM32F407ZGTx_FLASH.ld- MakefileMakefile脚本文件,重点,构建全流程脚本//OpenOCD 调试下载配置文件cmsis-dap.cfg  stm32f4x.cfg
  1. Makefile文件编写(重点)
   Author = dele####################################### target 构建目标###################################### TARGET = stm32f407-gcc-template  ####################################### building variables####################################### debug build?DEBUG = 1# optimizationOPT = -Og######################################## paths######################################## source path# firmware library pathPERIFLIB_PATH = # Build pathBUILD_DIR = Build####################################### source #   ####################################### 修改1 C源文件添加 参加文件工程,按照下面格式添加所有的c文件# C sourcesC_SOURCES =  \Kernel/src/stm32f4xx_it.c \Kernel/src/system_stm32f4xx.c \FwlibLibraries/src/misc.c \FwlibLibraries/src/stm32f4xx_adc.c \FwlibLibraries/src/stm32f4xx_can.c \FwlibLibraries/src/stm32f4xx_crc.c \FwlibLibraries/src/stm32f4xx_cryp_aes.c \FwlibLibraries/src/stm32f4xx_cryp.c \FwlibLibraries/src/stm32f4xx_cryp_des.c \FwlibLibraries/src/stm32f4xx_cryp_tdes.c \FwlibLibraries/src/stm32f4xx_dac.c \FwlibLibraries/src/stm32f4xx_dbgmcu.c \FwlibLibraries/src/stm32f4xx_dcmi.c \FwlibLibraries/src/stm32f4xx_dma2d.c \FwlibLibraries/src/stm32f4xx_dma.c \FwlibLibraries/src/stm32f4xx_exti.c \FwlibLibraries/src/stm32f4xx_flash.c \FwlibLibraries/src/stm32f4xx_flash_ramfunc.c \FwlibLibraries/src/stm32f4xx_gpio.c \FwlibLibraries/src/stm32f4xx_hash.c\FwlibLibraries/src/stm32f4xx_hash_md5.c \FwlibLibraries/src/stm32f4xx_hash_sha1.c \FwlibLibraries/src/stm32f4xx_i2c.c \FwlibLibraries/src/stm32f4xx_iwdg.c \FwlibLibraries/src/stm32f4xx_ltdc.c \FwlibLibraries/src/stm32f4xx_pwr.c \FwlibLibraries/src/stm32f4xx_rcc.c \FwlibLibraries/src/stm32f4xx_rng.c \FwlibLibraries/src/stm32f4xx_rtc.c \FwlibLibraries/src/stm32f4xx_sai.c \FwlibLibraries/src/stm32f4xx_sdio.c \FwlibLibraries/src/stm32f4xx_spi.c \FwlibLibraries/src/stm32f4xx_syscfg.c \FwlibLibraries/src/stm32f4xx_tim.c \FwlibLibraries/src/stm32f4xx_usart.c \FwlibLibraries/src/stm32f4xx_wwdg.c  \BspLibraries/src/key.c \BspLibraries/src/led.c \SystemLibraries/src/delay.c \SystemLibraries/src/usart.c \SystemLibraries/src/sys.c \SystemLibraries/src/timer.c \Application/src/main.c \# ASM sources# 修改2 汇编启动源文件添加 ASM_SOURCES =  \tools/startup_stm32f407xx.s######################################## binaries######################################## 修改3 gcc-arm-none-eabi工具链地址PREFIX = arm-none-eabi-GCC_PATH = /SoftwareApplication/gcc-arm-none-eabi/binifdef GCC_PATHCC = $(GCC_PATH)/$(PREFIX)gccAS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cppCP = $(GCC_PATH)/$(PREFIX)objcopySZ = $(GCC_PATH)/$(PREFIX)sizeelseCC = $(PREFIX)gccAS = $(PREFIX)gcc -x assembler-with-cppCP = $(PREFIX)objcopySZ = $(PREFIX)sizeendifHEX = $(CP) -O ihexBIN = $(CP) -O binary -S######################################## CFLAGS######################################## cpu 架构CPU = -mcpu=cortex-m4# fpuFPU = -mfpu=fpv4-sp-d16# float-abiFLOAT-ABI = -mfloat-abi=hard# mcuMCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)# macros for gcc# AS definesAS_DEFS = # C defines# 修改4 全局宏定义 -DXXX C_DEFS =  \-DSTM32F40_41xxx \-DUSE_STDPERIPH_DRIVER\# AS includesAS_INCLUDES = # C includes# 修改5 H源文件添加 参加文件工程,按照下面格式添加所有的文件夹C_INCLUDES =\-I Kernel/inc        	 \-I FwlibLibraries/inc    \-I FwlibLibraries/CMSIS/Include \-I BspLibraries/inc      \-I SystemLibraries/inc   \-I Application/inc		 \# compile gcc flagsASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sectionsCFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sectionsifeq ($(DEBUG), 1)CFLAGS += -g -gdwarf-2endif# Generate dependency informationCFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)"######################################## LDFLAGS######################################## link script# 修改6 link script 链接脚本文件添加  链接脚本如何获取看参考stm32cubemx官方工程LDSCRIPT = \tools/STM32F407ZGTx_FLASH.ld# librariesLIBS = -lc -lm -lnosys LIBDIR = LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections# default action: build allall: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin######################################## build the application######################################## list of objectsOBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))vpath %.c $(sort $(dir $(C_SOURCES)))# list of ASM program objectsOBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))vpath %.s $(sort $(dir $(ASM_SOURCES)))$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) @echo "[CC]    $<"@$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)@echo "[AS]    $<"@$(AS) -c $(CFLAGS) $< -o $@$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile@echo "[HEX]   $< -> $@"@$(CC) $(OBJECTS) $(LDFLAGS) -o $@@$(SZ) $@$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)@echo "[HEX]   $< -> $@"@$(HEX) $< $@$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)@echo "[BIN]   $< -> $@"@$(BIN) $< $@	$(BUILD_DIR):@mkdir $@		######################################## clean up####################################### # make clean  清除编译中间文件# Windows环境不支持 rm 因此写成 -del # Linux环境 clean:-del /q  $(BUILD_DIR)# Openocd 调试下载工具 # 修改7  cmsis-dap.cfg -f stm32f4x.cfg# 配置文件 修改成为自己使用的工具和芯片文件 如 stlink.cfg jlink.cfg stm32f1xx.cfgflash:openocd -f cmsis-dap.cfg -f stm32f4x.cfg -c init -c halt -c "program $(BUILD_DIR)/$(TARGET).bin 0x8000000" -c reset -c shutdown######################################## dependencies#######################################-include $(wildcard $(BUILD_DIR)/*.d)# *** EOF ***

四、STM32-工程测试

  1. make 构建工程

    在这里插入图片描述

    在这里插入图片描述

  2. make flash

    在这里插入图片描述

    接上串口线,打开串口软件,查看终端输出情况(如果是从MDK-Keil工程移植过来,printf应该是不支持的,因此终端没有输出,需要修改相关代码,后面写修改文件)(图片中的情况是修改之后的效果)

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1cf3ac67fade4aa49f3648b98d0759ab.png#pic_center)
  1. make clean

    清除工程,修改main.c代码,重新构建代码

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

  2. 注意修改的部分(仅我的工程,不代表全部)

    (1)usart.c printf重定向问题

    //重定向c库函数printf到串口,重定向后可使用printf函数
    // int fputc(int ch, FILE *f)
    // {
    //     /* 发送一个字节数据到串口 */
    //     USART_SendData(DEBUG_USART, (uint8_t) ch);//     /* 等待发送完毕 */
    //     while (USART_GetFlagStatus(DEBUG_USART, USART_FLAG_TXE) == RESET);//     return (ch);
    // }
    int _write (int fd, char *pBuffer, int size)
    {for (int i = 0; i < size; i++){while((USART1->SR&0X40)==0);//等待上一次串口数据发送完成USART1->DR = (uint8_t) pBuffer[i];       //写DR,串口1将发送数据}return size;
    }
    

    (2)sys.c 汇编代码 (注意,由于工程来源于正点原子的工程修改,可能与其他工程模板不一样,非不要)

    //THUMB指令不支持汇编内联
    //采用如下方法实现执行汇编指令WFI  
    __asm void WFI_SET(void)
    {WFI;		  
    }
    //关闭所有中断(但是不包括fault和NMI中断)
    __asm void INTX_DISABLE(void)
    {CPSID   IBX      LR	  
    }
    //开启所有中断
    __asm void INTX_ENABLE(void)
    {CPSIE   IBX      LR  
    }
    //设置栈顶地址
    //addr:栈顶地址
    __asm void MSR_MSP(u32 addr) 
    {MSR MSP, r0 			//set Main Stack valueBX r14
    }
    

    修改后

    //THUMB指令不支持汇编内联
    //采用如下方法实现执行汇编指令WFI  
    void WFI_SET(void)
    {__ASM volatile("WFI");		  
    }
    //关闭所有中断(但是不包括fault和NMI中断)
    void INTX_DISABLE(void)
    {__ASM volatile("CPSID   I");__ASM volatile("BX      LR");}
    //开启所有中断
    void INTX_ENABLE(void)
    {__ASM volatile("CPSIE   I");__ASM volatile("BX      LR");
    }
    //设置栈顶地址
    //addr:栈顶地址
    void MSR_MSP(u32 addr)
    {__ASM volatile("MSR MSP, r0"); __ASM volatile("BX r14");
    }

五、测试效果

​ 使用Vscode进行工程修改编辑,编译,下载代码(可以使用Cortex-Debug进行调试)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

搭建 Makefile+OpenOCD+CMSIS-DAP+Vscode arm-none-eabi-gcc 工程模板

STM32F407-GCC-Template Arm-none-eabi-gcc MakefileOpenOCDCMSIS-DAPVscode工程模板 一、本次环境搭建所用的软硬件 1&#xff09;Windows or Linux (本文以Windows为主) 2&#xff09;JLink、Daplink、Wch-Link烧录器 3&#xff09;GNU Arm Embedded Toolchain交叉编译…...

Unity场景ab包加载压缩(LZ4,LZMA)格式的测试

情况 最近场景越来越大&#xff0c;大概800M的场景加载时间可能长达40秒左右&#xff0c;所以需要测试看看发生了什么。 测试环境 测试环境Win10&#xff0c;21thI5-12600KF&#xff0c;32GRam &#xff0c; Nvidia GF RTX2060 32G Scene1大小&#xff1a;741M 加载代码 首…...

私有化部署大模型:5个.Net开源项目

从零构建.Net前后端分离项目 今天一起盘点下&#xff0c;10月份推荐的5个.Net开源项目&#xff08;点击标题查看详情&#xff09;。 1、BootstrapBlazor企业级组件库&#xff1a;前端开发的革新之路 BootstrapBlazor是一个用于构建现代Web应用程序的开源框架&#xff0c;它基…...

安卓系统手机便签app使用哪一款?

在现代快节奏的生活中&#xff0c;我们经常会遇到各种繁忙的事务和容易遗忘的备忘事项。为避免大家遗忘重要的事情&#xff0c;大家可以在常用的手机上安装记录备忘事项的工具&#xff0c;为了帮助安卓用户高效地记录和管理这些信息&#xff0c;今天我将向大家推荐一款功能强大…...

SpringCloud-Gateway无法使用Feign服务(2021.X版本)

Spring Cloud Gateway 2021.x版本&#xff0c;无法使用Feign调用其他服务接口。 问题原因&#xff1a; 在官网的 issue 里面找到了相关的问题。 How to call another micro-service on GatewayFilterFactory ? Issue #1090 spring-cloud/spring-cloud-gateway GitHubHel…...

基于SSM的建筑装修图纸管理平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

Apache Doris (五十二): Doris Join类型 - Broadcast Join

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. Broadcast Join原理...

Docker从入门到上天系列第四篇:docker平台入门图解与平台架构图解

大神推荐:作者有幸结识技术大神孙哥为好友获益匪浅,现在把孙哥作为朋友分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员。 本专栏简介:话不多说,让我们一起干翻Docker 本文章简介:话不多说,让我们讲清楚Docker的平台入门图解和平台…...

安全防御——四、防火墙理论知识

安全防御 一、防火墙1、防火墙是如何诞生的2、防火墙如何分类2.1 软件型防火墙2.1.1 个人防火墙2.1.2 网关型防火墙 3、硬件型防火墙4、防火墙的技术类型5、代理服务器什么是代理 6、防火墙的接口模式7、防火墙抵御的攻击7.1 DDoS攻击7.2 单包攻击7.3 用户行为不受控7.4 威胁安…...

如何给PPT幻灯片解除密码保护以防止编辑

如果您忘记了ppt幻灯片的密码或无法编辑它&#xff0c;不要担心&#xff0c;提供了一种安全、简单易操作的方法来找回密码或解除限制。具体步骤如下&#xff1a;第一步百度搜索密码帝官网&#xff0c;第二步在用户中心上传需要解密的文件即可。 无论您是使用手机还是电脑&#…...

在linux安装单机版hadoop-3.3.6

一、下载hadoop https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/hadoop-3.3.6/ 二、配置环境变量 1、配置java环境变量 2、配置hadoop环境变量 export HADOOP_HOME/usr/local/bigdata/hadoop-3.3.6 export HBASE_HOME/usr/local/bigdata/hbase-2.5.6 export JA…...

Hadoop相关

hdfs getconf -confKey dfs.namenode.http-address 查看Hadoop工作端口的信息 hdfs getconf -confKey dfs.datanode.http.address 查看HDFS的NameNode组件的HTTP端口。...

ArcGIS 气象风场等示例 数据制作、服务发布及前端加载

1. 原始数据为多维数据 以nc数据为例。 首先在pro中需要以多维数据的方式去添加多维数据&#xff0c;这里的数据包含uv方向&#xff1a; 加载进pro的效果&#xff1a; 这里注意 数据属性需要为矢量uv&#xff1a; 如果要发布为服务&#xff0c;需要导出存储为tif格式&…...

【Axure高保真原型】树切换动态面板案例

今天和大家分享树切换动态面板的原型模板&#xff0c;点击树的箭头可以打开或者收起子节点&#xff0c;点击最后一级人物节点&#xff0c;可以切换右侧面板的状态到对应的页面&#xff0c;左侧的树是通过中继器制作的&#xff0c;使用简单&#xff0c;只需要按要求填写中继器表…...

安装pr提示VCRUNTIME140.dll丢失的修复方法,3个有效的方法

在学习和工作中&#xff0c;我们经常需要使用到PR和PS。然而&#xff0c;在安装这些软件时&#xff0c;有时会遇到一些错误提示&#xff0c;其中之一就是“VCRUNTIME140.dll丢失”&#xff0c;无法运行启动软件程序。那么&#xff0c;如何解决VCRUNTIME140.dll丢失的问题呢&…...

Linux进程控制(2)

Linux进程控制(2) &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解了进程等待收尾内容和进程的程序…...

Android Glide transform旋转rotate圆图CircleCrop,Kotlin

Android Glide transform旋转rotate圆图CircleCrop&#xff0c;Kotlin import android.graphics.Bitmap import android.os.Bundle import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.load…...

如何让群晖Audio Station公开共享的本地音频公网可访问?

文章目录 1. 本教程使用环境&#xff1a;2. 制作音频分享链接3. 制作永久固定音频分享链接&#xff1a; 之前文章我详细介绍了如何在公网环境下使用pc和移动端访问群晖Audio Station&#xff1a; 公网访问群晖audiostation听歌 - cpolar 极点云 群晖套件不仅能读写本地文件&a…...

生态环境领域基于R语言piecewiseSEM结构方程模型

结构方程模型&#xff08;Sructural Equation Modeling&#xff0c;SEM&#xff09;可分析系统内变量间的相互关系&#xff0c;并通过图形化方式清晰展示系统中多变量因果关系网&#xff0c;具有强大的数据分析功能和广泛的适用性&#xff0c;是近年来生态、进化、环境、地学、…...

spring boot+netty 搭建MQTT broken

一、项目结构 二、安装依赖 <!-- netty包 --><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.75.Final</version></dependency><!-- 常用JSON工具包 --><…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...