学习STM32(1)--Keil软件安装与基本操作和Keil 软件高级应用

news2024/10/1 3:36:21

目录

1  引 言 

2  实验目的

3  实验内容

3.1 认识单片机和STM32

3.2 安装、认识软件Keil和硬件STM32F103开发板

3.3 学习调试工程

3.4 Keil工程软件的配置

4 深入解析

        思考一

        1.以项目“12-GPIO输出—使用固件库点亮LED”为例子,认识本地工程文件夹:

2.进入keil后的project目录介绍:

3.Keil文件类型概述:

1、Project Files工程类型文件:

2、Source Files源代码类型文件:

3、Listing Files链接类型文件:

4、Object and HEX Files目标和Hex类型文件:

5、Build Files编译类型文件 Debugger Files调试类型文件:

6、Other Files其他类型文件;

思考二

调试功能的用法:

思考三

查阅资料解释Keil软件Option选项卡下面每个子目录下面可配置的参数,以及实现的功能。

Target区域介绍:

第1处:晶振频率

第2处:操作系统

第3处:系统预览文件

第4处:使用交叉模块优化、使用微库microLIB

第5处:ROM/RAM存储地址

Listing区域介绍:

第1处:输出路径、宽高

第2处:输出汇编列表

第3处:C编译列表

第4处:链接列表

C/C++目录

第1处:使用分散文件加载对话框Target页面(Use Memory Layout from Target Dialog)

第2处:分散文件(Scatter File)

第3处:两个选项和C/C++选项一样。


引 言 

        我们要认识单片机、STM32是什么和认识我们实验使用到的软件Keil和硬件STM32F103开发板,和Keil项目中的目录、文件,认识完这些后我们就可以开始单片机的挑战了。我们需要熟悉Keil软件的断点设置、调试功能和掌握Keil软件的工程配置。

实验目的

  1. 认识单片机、STM32是什么
  2. 认识软件Keil和硬件STM32F103开发板
  3. 熟悉Keil软件的断点设置、调试功能
  4. 掌握Keil软件的工程配置

实验内容

3.1 认识单片机和STM32

        单片机:单片机(Microcontroller)是一种集成了中央处理器(CPU)、存储器(RAM、ROM、闪存等)、输入/输出端口(I/O ports)以及定时/计数器等功能于一体的微型计算机系统。它通常用于嵌入式系统中,用于控制各种设备和系统,例如家电、汽车、医疗设备、工业控制等。

        STM32:STM32是STMicroelectronics(意法半导体)推出的一系列32位ARM Cortex-M微控制器(Microcontroller)产品。STM32系列产品具有高性能、低功耗、丰富的外设和灵活的封装等特点,广泛应用于各种嵌入式系统中,包括工业控制、消费电子、汽车电子、智能家居、医疗设备等领域。

3.2 安装、认识软件Keil和硬件STM32F103开发板

        Keil软件:Keil软件是一款专业的嵌入式系统开发工具,提供了一套完整的工具链和友好的开发环境,帮助开发者轻松地进行嵌入式系统的软件开发、调试和部署。

        通过Keil5安装包安装Keil软件并且安装STM32芯片包。

        安装推荐博客(若侵权告知必删):http://t.csdnimg.cn/QKrLf

STM32F103开发板:STM32F103开发板是一种用于STM32F103系列微控制器的软件开发和验证的硬件平台,具有丰富的外设和功能,为开发者提供了方便快捷的开发环境。

                                           图1 F103_霸道V2版本硬件资源标准图 

3.3 学习调试工程

调试工程的目的:

1.仿真调试实时跟踪代码的运行,逐步执行代码,程序出现问题并能跟踪到问题所在;

2.设置调试断点,使程序运行到指定位置停下;

3.能够观察全局变量的变化、寄存器的变化;

4.可以查询某个内存地址的存储的数据;

5.显示调用栈的内容,也就是函数指针和局部变量;

6.可以查询片内外设和片外外设的寄存器变化,对照芯片手册的相应寄存器的说明,便可以知道相应外设寄存器的值是否出错。

7. 调试工具栏是我们在线调试时常用的工具栏(按钮),掌握这些按钮就能快速的调试代码,也即能快速的定位我们程序哪些地方存在不足。

                                                               图2 工具栏介绍

                                                         图3 代码调试心得

                                                             图4 工具栏介绍

3.4 Keil工程软件的配置

                                                    图5 工程配置的主要方向 .

4 深入解析

        思考一

        利用Keil5打开所给例程中任何一个工程文件,调查资料并解释Keil5左侧Project窗口中每个目录的作用,以及每个文件的作用。

        1.以项目“12-GPIO输出—使用固件库点亮LED”为例子,认识本地工程文件夹:

                                                             图6 本地工程文件夹

Doc文件夹:用来存放程序说明的文件,由写程序的人添加。(可以放工程说明.txt)

Libraries文件夹:存放的是库文件(CMSIS: 里面放着跟 CM3 内核有关的库文件 STM32F10x_StdPeriph_Driver: STM32 外设库文件)

Listing文件夹:存放编译器编译时候产生的 C/汇编/链接的列表清单

Output文件夹:存放编译产生的调试信息、hex 文件、预览信息、封装库等

Project文件夹:用来存放工程

User:用户编写的驱动文件(stm32f10x_conf.h:用来配置库的头文件

stm32f10x_it.h stmm32fl0x_it.c:中断相关的函数都在这个文件编写,暂时为空 main.c:main 函数文件)

2.进入keil后的project目录介绍:

                                                       图7 Keil中的project目录

STARTUP文件夹:启动文件,由汇编语言编写, 主要负责启动,因为stm32单片机的内部结构非常复杂,启动代码必须使用更高效率的汇编语言,由ST公司提供,一般不需要修改。启动文件由汇编代码编写,一般命名为startup_xxx.s,xxx为支持的某种芯片,比如stm32f10x(意法半导体stm32f10x系列)等Cortext-M0/M3/M4内核芯片。它们的代码格式非常相近,根据启动文件代码由上到下的编写顺序。(可分为五部分:1.堆栈空间定义;2.存放中断向量表;3.复位中断函数(Reset_Handler);4.其它中断异常服务函数,以及弱[WEAK]声明;5.将堆栈地址传递给库函数,利用库函数初始化堆栈,和库函数自身初始化。

CMSIS文件夹:STM32固件库的CMSIS。CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。

                                                 图8 基于CMSIS标准的软件架构

core_cm3.h + core_cm3.cCortex-M3内核及其设备文件。访问Cortex-M3内核及其设备:NVICSysTick等;访问Cortex-M3CPU寄存器和内核外设的函数。

stm32f10x.h:这个头文件包含了STM32的大部份定义:

        a.定义芯片的类型,如#define STM32F10x_MD

        b.定义是否包含标准库,#define USE_STDPERIPH_DRIVER

        c.定义外部振荡器频率,#define HSE_VALUE

        上面三个定义,建议在main.c文件中刚开始就定义好,或者是在编译器选项中定义好,这样就可以不修改这个文件了。

        d.采用枚举的方式定义中断号。定义中断号在stm32f10x_it.c    stm32f10x_it.h

        e.包含 core_cm3.hsystem_stm32f10x.h #include "core_cm3.h" #include "system_stm32f10x.h" #include <stdint.h> 

        f.定义数据类型,例如:typedef uint32_t  u32此外还定义了FlagStatusITStatusErrorStatus等。u8s8等为了兼容以前的库所定义的数据,建议程序中用标准的uint8_t这样的类型。此外还定义了boolFlagStatusalStatusErrorStatus

        g.定义外设结构体,地址及用到的数据常量。

        h.包含stm32f10x_conf.h来配置外设。#ifdef USE_STDPERIPH_DRIVER     #include "stm32f10x_conf.h"       #endif

        i.定义位操作的宏

system_stm32f10x.hsystem_stm32f10x.c

        a.定义一个全局变量 extern uint32_t SystemCoreClock: 系统时钟频率与你选择有关

        b.SystemInit():这个函数就是启动文件中调用的函数

         (1) 在system_stm32f10x.c的开始部份,选择相关的系统时钟频率,如#define  SYSCLK_FREQ_24MHz  24000000

         (2) 通过SystemInit()函数,就将SYSCLK = HCLK = PCLK1=PCLK2=PLL输出24MHz。注意:这个频率为HSE8MHz时为条件,如果HSE不为8MHz或用HSI时,就会有问题。

        c.SystemCoreClockUpdate():更新SystemCoreClock的值,与系统频率一致。

        可能看到,这个文件中的RCC设置很有局限性,所以在程序中,可以不用它,而用标准库存中的stm32f10x_rcc中的函数进行设置。

FWLB文件夹:FWLIB下面存放ST官方提供的外设固件库源文件和头文件。每个.c源文件文件对应一个,h头文件。

USER文件夹:用户程序,其中main.c是主程序文件,是用户需要编写的程序部分;该目录下的库文件,一般不需要修改。stm32f10x_it.c/.h中主要用来定义部分中断服务函数。system_stm32f10x.c主要定义systemInit等时钟初始化函数。stm32fl0x_conf.h:用来配置库的头文件。

DOC文件夹:存放开放文档、需求文档

                                                            图9 拓展补充总结 

                                                           图10 代码层次结构图 

3.Keil文件类型概述:

Keil文件可以分为7类:

1Project Files工程类型文件:

工作空间文件:(这类文件不能删除) *.uvmpwµVision Project file for Multiple Projects多工程文件,也就是我们说的工作空间文件。

工程文件:(这类文件不能删除) *.uvprojxµVision5工程文件

*.uvprojµVision4工程文件   *.uv2µVision3工程文件

工程选项配置文件:(这类文件不能删除) *.uvoptxµVision5工程选项配置文件

项目界面布局文件:(这类文件可以删除) *.uvguix[.user-name]µVision5项目界面布局文件。删除之后,重新打开工程,界面布局会恢复到默认布局。如Demo.uvguix.Administrator

*.uvguix[.user-name]µVision4项目界面布局文件。

*.uvoptµVision4工程选项配置文件

2、Source Files源代码类型文件:

*.cC源文件  *.hC头文件  *.cppC++源文件   *.s:汇编源文件

*.a51:汇编源文件  *.a66:汇编源文件  *.inc:汇编头文件

*.srcC编译器生成的其他源文件

3Listing Files链接类型文件:

这一类文件属于中间文件,一般在编译过程中产生。可以在工程目标选项中配置对应的链接文件。Project -> Options for Target -> Listing

*.map:存储镜像文件

*.iC预处理器输出文件    *.scr:链接器分散加载器文件

*.lstC编译器或汇编器生成的文件   *.m51:同样也是map文件

*.m66:同样也是map文件    *.htm:链接器的列表文件

4Object and HEX Files目标和Hex类型文件:

这一类文件同样属于中间文件,一般在编译过程中产生。但这类文件比较重要,调试信息、预览信息、可执行文件等都在这里面。

Project -> Options for Target -> Output

*.hex:可执行文件

*.axf:包含调试信息的程序文件 有时候我们调试出错,可能是axf没有文件。

*.d:编译生成的依赖文件 一般一个.c文件对应一个.d文件。

*.o:也是目标的依赖文件 重定位定址的依赖文件。

*.lib:库文件 生成的库就在这里。  *.elfELF/DWARF链接的文件

*.crf:浏览信息文件 使用Go to Definition Of 功能,就需要有这类文件。

5Build Files编译类型文件 Debugger Files调试类型文件:

编译和调试,其实是两类不同文件,综合在一起介绍。

*.bat:批处理文件     ._IA, .__I, ._II, .SCR:工具调用文件

*.ini:于初始化源码文件

6Other Files其他类型文件;

*.pack:软件(支持)包文件  *.sct:链接控制文件

*.lnp:连接器传递命令文件   *.dep:目标编译依赖文件

*.cdbµVision设备数据库文件

思考二

通过调试源代码“12-GPIO输出—使用固件库点亮LED”,深入熟悉调试功能的用法。

调试功能的用法:

1.理解示例代码:首先,仔细阅读“12-GPIO输出—使用固件库点亮LED”的代码,理解代码中的每一行都在做什么。

2.设置调试环境:确保开发环境已经正确设置,连接了STM32F103开发板到电脑。

3.编译代码:在Keil中编译代码,确保没有语法错误或者编译错误。

4.下载代码到目标板:使用调试器将编译后的代码下载到STM32F103开发板上。

5.启动调试会话:在开发工具中启动调试会话,连接到目标板上的STM32F103。

6.设置断点:在代码中设置断点,例如可以在点亮LED的代码行设置一个断点,这样当程序执行到该行时会暂停。

7.单步执行代码:使用单步执行功能,逐步执行代码,观察代码的执行流程以及变量的值变化。可以在每一步检查GPIO端口的状态,以确保GPIO配置正确。

8.观察LED状态:在单步执行过程中,观察LED的状态是否符合预期。如果LED没有点亮,可以逐步排查问题,例如检查GPIO配置、LED连接是否正确等。

9.使用调试工具:利用调试工具提供的功能,如变量监视器、寄存器查看器等,进一步深入分析代码的执行情况。

10.调试问题:如果遇到问题,可以使用调试工具提供的功能来定位和解决问题。可以通过查看变量的值、观察程序执行流程等方法来调试代码。

思考三

查阅资料解释Keil软件Option选项卡下面每个子目录下面可配置的参数,以及实现的功能。

Device目录: "search"框可以输入芯片名称,快速找到对应的芯片;芯片结构图里也可以选择芯片,这里芯片是按厂家区分,并且芯片结构图里也可以选择芯片,这里芯片是按厂家区分;”Software Pack”框可以查看当前芯片包的版本。具体的software component 在Manage Run-Time Environment对话框可以看到:点击

Target目录:从内容可以看得出来是工程目标的调试晶振频率、选择的编译器、RAM和ROM分配的地址空间等。” STMicroelectronics”框可以查看芯片型号;” Code Generation”框可以选择编译器版本;

                                                        图11 target分区域

Target区域介绍:

第1处:晶振频率

这个值主要用于仿真调试用,使用硬件调试则是根据实际的使用频率。

第2处:操作系统

是否选择Keil自带的RTX操作系统,一般都不选。

第3处:系统预览文件

这里是根据前面选择的device自动确定的对应芯片的svd文件,这个文件一般在安装目录下,如果想要更改就勾选Use Custom SVD File再选择文件所在目录。System Viewer功能是用来仿真时观察和修改芯片的在外设寄存器用的,它按芯片厂家的手册直接列出所有寄存器的位和功能指示。在仿真过程中可以修改和查看。

第4处:使用交叉模块优化、使用微库microLIB

跨模块优化:使能链接器反馈文件,从而能够更深层次的代码优化。一般不使用

微库:是缺省的C库,而且microLIB进行了高度优化。如果不勾选“Use MicroLIB”,keil会连接标准C库。所以勾选“Use MicroLIB”会减小code大小。它不完全兼容ANSI,但已能满足大多数的应用。

第5处:ROM/RAM存储地址

这里的ROM存储指的是程序储存的地址,分片外和片内两种。

程序存储在片内好理解(初学者一般下载程序都是下载到片内FLASH),片外存储程序对于初学者来说比较少见,一般都是项目做大了,或有特殊要求时,片内不够使用了才将程序存储在片外。

    Output目录:”Select folder for objects”框可以选择存放编译过程中产生的过程文件的目录;“Name of executable”框显示可执行文件名称;下面的选项为输出可执行文件,输出这些信息都很费时间,如果都不勾选这些选项,编译速度会很快。”Debug Infomation”选项输出调试信息,勾选上这个选项,才可以进行调试;”Create HEX File”选项输出可执行Hex文件;“Browse Information”选项输出浏览信息,勾选上这个才能使用go to definition of这个功能。

        Listing目录:生成列表相关的选项,对代码分析比较透彻的工程师就需要了解这个选项。常见的就是map地址的分布,就是在这里配置生成的的。

                                                        图12 Listing分区域

Listing区域介绍:

第1处:输出路径、宽高

选择列表文件输出的文件夹。可设置文件页面的宽度,长宽

第2处:输出汇编列表

勾选上会输出汇编列表信息(产生后缀为 .lst的文件)。如果工程中没汇编文件,则不会输出信息。这个文件包含了有关编译过程的很多信息,比如编译器版本号、源文件名称,由C语言程序编译产生的汇编代码,以及编译过程中产生的错误、警告信息,这些信息和编译时屏幕显示的提示信息相同。

第3处:C编译列表

C编译程序列表选项,勾选上可生成.txt, .i文件。

第4处:链接列表

        可选择生成或禁止生成.map文件。可设置生成代码的详细信息。可选择性的选取输出MAP文件。map文件是通过编译器编译之后,集程序、数据及IO空间的一种映射文件。在遇到内存越界,或溢出的情况时,可以分析map文件。通过map文件可以知道函数大小,入口地址等一些重要信息。

Memory Map:内存映射  Callgraph:图像映射   Symbols:符号

Cross Reference:交叉引用   Size Info:大小信息

Totals Info:统计信息     Unused Section Info:未调用模块信息

Veneers Info:装饰信息

    User目录:这个选项是针对用户而设计的,一般不常用,方便用户执行一些程序。

Before Compile C/C++ File参数: 编译c文件之前

Before Build参数:编译之前     After Build/Rebuild参数:编译之后

注:Compile:只编译选定的目标,可以是单个文件,不管之前是否已经编译过,在这个过程中检查语法错误。但并不生成可执行文件

Build:只编译工程中上次修改的文件及其它依赖于这些修改过的文件的模块,同时重新链接生成可执行文件。如果工程之前没编译链接过,它会直接调用Rebuild All。另外在技术文档中,Build实际上是指increase build,即增量编译。

Rebuild:不管工程的文件有没有编译过,会对工程中所有文件重新进行编译生成可执行文件,因此时间较长。

C/C++目录

1. 预处理(Preprocessor Symbols):主要就是预定义功能,相当于程序中的#define xxxx。

2.语言代码生成(Language / Code Generation):编译,链接到最后生成代码,编译优化

[Execute only Code设置编译器命令行]:只生成执行代码,防止编译器生成任何数据访问代码部分。

[Optimize代码优化]:有Level0 - Level3四个选项,初学者、在线调试建议使用Level0,也就是不优化,这样执行的效果才和代码一样。如果配置成Level3,在线调试可能有些地方优化而不能打断点。

[Optimize for Time优化时间]:即优化代码中费时的地方,比如有些算法,本身代码量就比较大,运行需要很长时间(假如需要2秒),这个时候勾选上该功能,会发现运行时间有比较明显的减少(或许不到1秒时间)。

[Split Load and Store Multiple]:加载和存储多个分裂,非对齐数据采用多次访问方式。当 LMD/STM 指令有 4 个以上产生时,列分裂LMD 和 STM 指令,以减不中断延迟。

LDM:(load much)多数据加载,将地址上的值加载到寄存器上

STM:(store much)多数据存储,将寄存器的值存到地址上

[One ELF Section per Function]:优化每一个函数 ELF 段,每个函数都会产生一个 ELF 段,勾选上,允许优化每一个 ELF 段,最会将需要的函数链接成一个大的ELF文件。但是如果没有勾选,Keil将每个文件编译成一个ELF文件(即使文件中用未被使用的函数),最会链接成一个ELF文件。所以勾选会使code变小。这个选项可以减少潜在的共享地址、数据和函数之间的字符串。

[strict ANSI C]:编译时严格按照标准的ANSI C进行检查。

[Enum Container always int]:枚举总是int型

[enum_is_int]:枚举时成员变量类型为int型。

[Plain Char is Signed]:纯字符标记为字符

[Read-Only Position Independent]:为常量生成独立的代码空间。我们定义字库变量为常量,勾选该选项,会将这些字库变量放在独立的代码空间。

[Read-Write Position Independent]:为可读写代码生成独立的代码空间。

[Warnings]:警告

No Warnings:不会有警告提示和输出;

All Warnings:所有警告提示和输出。

Thumb Mode:Thumb模式。

No Auto Includes:不自动添加头文件,不勾选该选项,编译器就会在Keil安装路径寻找你工程中.h文件。

举例:我们定义uint8_t是定义在stdint.h文件里面的,但是我们工程目录下一般是没有stdint.h文件。这时候,编译器就会在Keil路径下去寻找stdint.h文件。

C99 Mode:C99标准模式。(C语音有标准有多个版本,如C89、C90、C99等)

3.include path包含路径:指定工程中使用的h文件的存放位置,让编译器找到对应的文件

4.多功能控件Misc Controls:指定没有单独的对话框控件

5.编译器控制字符串Compiler control string:编译器执行的命名,显示当前在编译器命令行指令。

Asm目录:汇编选项。有条件的装配控制符号(Conditional Assembly Control Symbols):指定汇编条件,这里类似C/C++中的预处理。

语言代码生成(Language / Code Generation)和C/C++中类似

Linker目录:链接配置选项。可以修改、编辑和查看链接的文件。

                                                      图13 Linker区域划分

 区域介绍:

第1处:使用分散文件加载对话框Target页面(Use Memory Layout from Target Dialog)

Make RW Sections Position Independent:使RW段独立

【设置编译器命令行:–rwpi】

启用时:变量区域(包含RW和ZI)具有独立地址。

禁用时:变量区域(包含RW和ZI)位于绝对的内存地址。

Make RO Sections Position Independent:使RO段独立

【设置编译器命令行:–ropi】

启用时:常量和代码区域(RO)具有独立地址。

禁用时:常量和代码区域(RO)位于绝对的内存地址。

Don’t Search Standard Libraries:不搜索标准库

【设置编译器命令行:–noscanlib】

禁用默认编译器运行时库的扫描。

Report ‘might fail’ Conditions as Errors:报告’might fail’条件认为是错误

【设置编译器命令行:–strict】

报告的条件可能导致失败的错误,而不是警告。

X/O Base:X/O基地址

【设置编译器命令行:–xo_base=address】

R/O Base:R/O基地址

【设置编译器命令行:–ro_base=address】

R/W Base:R/W基地址

【设置编译器命令行:–rw_base=address】

disable Warnings:警用警告

【设置编译器命令行:–diag_suppress】

第2处:分散文件(Scatter File)

这里可以加载、查看和编辑分散文件。点击后面就的三点“…”可以加载文件;点击“Edit…”查看和编辑对应的文件。

第3处:两个选项和C/C++选项一样。

Debug目录:DLL文件属于Keil自身的配置。

CPU/Driver DLL - Parameter:CPU驱动文件和参数

Dialog DLL - Parameter:会话框DLL文件和参数

                                                         图14 Debug区域介绍

                                              图15 Debug目录下的setting选项

        Utilities目录:配置FLASH菜单命名(Configure Flash Menu Command):这里是二选一选项,一般使用上面的“Update Target Driver for Flash Programming”列表选择和调试接口一致的驱动。

        Use Debug Driver:使用调试驱动

        Update Target Before Debugging:调试之前更新目标

        一般都勾选上,因为我们下载程序之前检测到代码修改了,就会重新编译程序(也就是更新目标)

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

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

相关文章

2024下《信息安全工程师》案例简答题,刷这些就够了!

距离2024下半年软考已经越来越近了&#xff0c;不知道今年备考软考信息安全工程师的同学们开始准备了吗&#xff1f; 简答题一直是信安拿分的重点区域&#xff0c;对于许多考生来说&#xff0c;也往往是最具挑战性的部分。今天我就把那些重要的案例简答题类型整理汇总给大家&am…

招聘网站的头像如何上传?

1、某招聘网站 显示的是圆形的&#xff0c;但是上传却需要正方形的300300像素。 2、某某招聘网站 仅支持jpg格式&#xff0c;不支持png 3、某某招聘网站 支持1mb以内图片&#xff0c;格式gif,jpg,png都支持。比较友好 4、某招聘网站 这里仅支持200200像素&#xff0c;图片格…

贪心系列专题篇四

​​​​​​​ 目录 整数替换 解法一 解法二 俄罗斯套娃信封问题 堆箱子 可被三整除的最大和 距离相等的条形码 重构字符串 声明&#xff1a;接下来主要使用贪心法来解决问题&#xff01;&#xff01;&#xff01; 整数替换 题目 思路 下面将使用两种方法来解决这…

【论文阅读】—RTDETR

《DETRs Beat YOLOs on Real-time Object Detection》 最近&#xff0c;基于端到端DETR取得了显著的性能。然而&#xff0c;DETR的高计算成本限制了它们的实际应用&#xff0c;并阻碍了它们充分利用无后处理&#xff08;如非最大抑制&#xff08;NMS&#xff09;&#xff09;的…

Windows下如何像linux一样查看GPU使用情况

在linux下&#xff0c;只要使用 nvidia-smi即可看到服务器中每块卡的使用情况 但是在windows下该如何查看显卡的使用情况呢 通过网上学习发现&#xff0c;windows下有一个叫nvidia-smi.exe的程序 找到它所在的路径&#xff0c;然后在命令行中进入到这个路径&#xff0c;然后…

文件上传漏洞-HackBar使用

介绍 HackBar 是一个用于浏览器的扩展插件&#xff0c;主要用于进行网络渗透测试和安全评估。它提供了一系列方便的工具和功能&#xff0c;可以帮助用户执行各种网络攻击和测试&#xff0c;包括 XSS、SQL 注入、CSRF、路径穿越等 下载地址 可以到github上面去下载&#xff0…

傅里叶级数的C语言验证

目录 概述 1 收敛性 1.1 收敛定理 1.2 理解收敛定理 2 傅里叶级数的应用 2.1 问题描述 2.2 实现方法 3 方波函数的傅里叶验证&#xff08;C语言实现&#xff09; 3.1 方波函数 3.1.1 编写方波函数 3.1.2 程序函数验证 3.2 傅里叶级数函数实现 3.2.1 编写傅里叶级…

Android 实现左侧导航栏:NavigationView是什么?NavigationView和Navigation搭配使用

目录 1&#xff09;左侧导航栏效果图 2&#xff09;NavigationView是什么&#xff1f; 3&#xff09;NavigationView和Navigation搭配使用 4&#xff09;NavigationView的其他方法 一、实现左侧导航栏 由于Android这边没有直接提供左侧导航栏的控件&#xff0c;所以我尝试了…

Frida Hook String构造函数

前言 在实际Android应用开发中&#xff0c;无论是使用多么复杂的算法对字符串进行加密&#xff0c;然而开发者常常会构造出字符串的实例。因此&#xff0c;我们可以通过使用Frida hook String类的构造函数来追踪这些实例的构造位置&#xff0c;然后可以通过构造实例的地方栈回…

Java GUI制作双人对打游戏源码以及应用程序分享

文章目录 前言一、可执行程序二、源码以及图片资源总结 前言 在之前的文章展示了如何构建一款双人对打游戏&#xff0c;博文链接如下&#xff1a; https://blog.csdn.net/qq_43646281/article/details/137748943?spm1001.2014.3001.5501 感兴趣的小伙伴可以再去回顾一下: 原文…

一分钟了解请求转发与重定向

目录 请求转发 重定向 请求转发 为了更好的了解请求转发&#xff0c;我们可以画出关系图&#xff1a; 请求转发的特征: 地址栏的地址不发生改变, 是请求的资源的url请求转发中, 是一次请求request域有效请求转发是在服务器端转发的, 请求转发资源只能是服务器内部资源 重定…

Pointnet++改进即插即用系列:全网首发FMB自调制特征聚合|即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入FMB,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理论介…

DS18B20数字温度传感器操作解析

文章目录 引言特点工作原理引脚说明配置寄存器温度寄存器时序初始化时序写时序读时序 引言 DS18B20 是一种广泛使用的数字温度传感器&#xff0c;具有高精度和易用性。是Dallas Semiconductor公司&#xff08;现为Maxim Integrated公司&#xff09;生产的单总线数字温度传感器…

Typora+PicGo-Core(command line)+Gitee 实现上传图片到图床(看这一文就够)

前言 ​ 对于喜欢写Markdown文档的人来说&#xff0c;Typora无疑是一个写作利器&#xff0c;它有别于其他的Markdown软件&#xff0c;不是一边编辑一边渲染&#xff0c;而是即写即渲染&#xff0c;这样对于浏览md文件也非常友好。此外Typora还支持更换主题&#xff0c;在其官网…

机器学习 第10章-降维与度量学习

机器学习 第10章-降维与度量学习 10.1 k近邻学习 k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法其工作机制非常简单:给定测试样本&#xff0c;基于某种距离度量找出训练集中与其最靠近的k个训练样本&#xff0c;然后基于这k个“邻居”的信息来进行预测。通…

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计(CVPR2021)

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计&#xff09; 本文介绍论文原理介绍网络代码多种yaml设置网络测试及实验结果 本文介绍 YOLOv5&#xff08;You Only Look Once&#xff09;以其高效、准确的实时目标检测性能被广泛应用。然而&#xff0c;随着视觉…

【保姆级讲解C语言中的运算符的优先级!】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【Material-UI】使用指南:快速入门与核心功能解析

文章目录 一、快速入门1.1 安装和导入1.2 组件的独立性 二、全局设置2.1 响应式元标签2.2 CssBaseline2.3 默认字体 三、响应式设计3.1 Grid系统 四、最佳实践4.1 组件的一致性4.2 性能优化4.3 可访问性 五、总结 Material-UI是一个功能强大且灵活的React UI框架&#xff0c;为…

数学建模--二分法

目录 二分法的基本原理 应用实例 求解方程根 查找有序数组中的元素 注意事项 Python代码示例 ​编辑 延伸 二分法在数学建模中的具体应用案例有哪些&#xff1f; 如何选择二分法的初始区间以确保收敛速度和精度&#xff1f; 在使用二分法求解方程时&#xff0c;如何…

通过 ACM 论文模版学习 LaTeX 语法 【四、图】

文章目录 一、LaTeX 简介二、ACM 论文模版三、格式四、图和表4.1 图4.1.1. 导言区设置4.1.2. 插入图片的基本语法4.1.3. 设置图片的尺寸和位置4.1.4. 图片浮动体4.1.4.1. figure 环境4.1.4.2. 位置参数4.1.4.3. \centering4.1.4.4. \includegraphics4.1.4.5. \caption4.1.4.6. …