STM32的LED点亮教程:使用HAL库与Proteus仿真

学习目标:掌握使用STM32 HAL库点亮LED灯,并通过Proteus进行仿真验证!

建立HAL库标准工程

        1.新建工程文件夹

        新建工程文件夹建议路径尽量为中文。建立文件夹的目的为了更好分类去管理项目工程中需要的各类工程文件。

        首先需要在某个位置建立工程文件夹,例如我在桌面的protues文件夹的demo文件夹建立了一个LED工程文件夹C:\Users\Shinelon\Desktop\proteus\demo\LED

67a2b528ee6e42fd8d1f1e7f5c9f6ecf.png

        然后在该文件夹下建立下述的文件夹

名称作用
Drivers存放硬件相关的驱动层文件
Middlewares存放中间层组件文件和第三方中间层文件
Output存放工程编译输出文件
Projects存放 MDK 工程文件
User存放 HAL 库用户配置文件、main.c、stm32f1xx_it.c、以及 我们自己编写的其它应用程序

         另外可以在该文件夹下面建立一个readme的txt文件,用作该工程的说明。

        建立之后效果如下:

c913f94372aa452b866f8bd670522cc0.png

        建立后上述文件夹结构后,需要拷贝部分文件,用于后续的工程中使用,根据上诉的文件夹顺序依次说明。

        Drivers 文件夹

        用于存放驱动文件,建立BSP、CMSIS和STM32F1xx_HAL_Driver三个个文件夹,其中BSP存放个人编写驱动代码;CMSIS用于存放启动文件和stm32f1xx.h等底层代码;STM32F1xx_HAL_Driver用于存放 ST 提供的 F1xx HAL 库驱动代码。

b14c3fb339d642eab3e88a79e83e7635.png

        CMSIS和STM32F1xx_HAL_Driver相关文件可以在STM32CubeF1 固件包中的Drivers拷贝。STM32CubeF1 固件包的获取可以在ST意法半导体官网直接搜索STM32CubeF1下载即可。

        但官方提供的STM32CubeF1固件包里面包含的东西太多,我们在保留我们现在需要的,因此作如下处理。

       在Drivers\CMSIS\Device\ST\STM32F1xx\Include路径下只保留下述文件

4230dccc6bcc4797a26ffe69db7678d1.png

 在Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates只保留下述文件

2ba4c252466d40e1aaf3df3e513cc2f7.png

        在Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm中只保留启动文件startup_stm32f103xe.s

98c02be76db44203a1966a208b39fc67.png

 在Drivers\CMSIS\Include中保留下述文件

6f76fa9d012a4140ac7db4a259f0f90a.png

        到此Drivers处理完成。

        Middlewares 文件夹

         Middlewares 文件夹用于存放中间层组件文件和第三方中间层文件。我们新建工程实验暂时用不到,留空就行,后面的实验将会陆续添加各种文件。

         Output 文件夹

        Output 文件夹用于存放编译器编译工程输出的中间文件,比如:.hex、.bin、.o 文件等。 这里不需要操作,后面只需要在 MDK 里面设置该文件夹为编译输出文件的存放文件夹就行。         Projects 文件夹

        Projects 文件夹用于存放 MDK 工程,因为我们的工程是基于 ARM,所以我们在 Projects 文件夹里面新建一个命名为 MDK-ARM 的文件夹,用于存放 MDK 的工程文件

        User 文件夹

        User 文件夹用于存放 HAL 库用户配置文件、main.c、中断处理文件,以及配置文件 stm32f1xx_hal_conf.h。

        从官方固件包里面直接拷贝官方的模板到我们的User。官方的模板工程路径:STM32Cube_FW_F1_V1.8.0\Projects\ STM3210E_EVAL \Templates,打开 Template_Project 文件夹,在 Inc 和 Src 文件夹里面,在这两个文件夹里面找到:stm32f1xx_it.c、 stm32f1xx_it.h、stm32f1xx_hal_conf.h 这三个文件,拷贝到我们的 User 文件夹下。同时在User建立一个main.c的文件如图:

4a19f2757fd54b80a258470009adf8fc.png

到此新建工程文件夹完成。

        2.新建工程

        打开 Keil uVision5,点击菜单 Project ->New Uvision Project,如图所示。

e9aac95540234c6bbae609ada2ef2853.png

        然后弹出工程命名和保存的操作窗口,工程文件保存路径为:,工程名字我们取:LED,最后点击保存即可。

34c8e01089444613b1e512d7ad368506.png

        接下来会弹出一个选择 Device 的界面,就是选择我们的芯片设备型号,STM32F103C8T6,所以我们选择:STMicroelectronics→STM32F1 Series→STM32F103→STM32F103c8

        de718ca82be94f96b3899d051e7a8fd3.png

点击OK出现下面弹窗点击Cancel 

3f9f18f0c9124e74889771e096b6ef0b.png

        3.添加文件

        在项目工程中设置工程名字和分组,目的是分类管理。分组如下表所示:

名称作用
Startup存放启动文件
User存放man等用户文件
Drivers/CMSIS存放系统驱动代码
Drivers/STM32F1xx_HAL_Driver存放ST提供的HAL库驱动代码
Drivers/BSP存放个人系统驱动代码

         可在工程管理中进行更改工程名字和分组,单击小魔方即可进入

5151f1f823b94bc297481cc4b8a7ac8b.png

 进入小魔方之后,可双击空白区域新建

9d13e1ef9ed4466db2a966e933b83e94.png

 设置好之后,我们点击 OK,回到 MDK 主界面,可以看到我们设置的工程名和分组名

a14d710185ad4d459d975d7b50dd8ca1.png

        建立好文件管理之后需要依次添加文件

        添加启动文件

        该文件由 ST 官方提供,添加方式可以在小魔方中操作,点击小魔方按钮,进入工程管理界面,选中 Startup分组,然后点击:Add Files,进入文件添加对话框,

c4ad5132d32740e99839cfdc1fee6dfe.png

其路径在Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm中。

f83dcec8332c41aaae2dc94deb302afe.png

 注意文件类型需要更改为.s(默认是.c),点击Add即可。

        添加 User 源码

        同样在小魔方中操作,点击小魔方按钮,进入工程管理界面,选中 User 分组,然后点击:Add Files,进入文件添加对话框。路径为User,将依次添加main.c和stm32f1xx_it.c

a1b2a48aad3040d4b8949e5fb0d45731.png

        添加 CIMC 源码 

        点击小魔方按钮,进入工程管理界面,选中 Drivers/CIMC分组,然后点击:Add Files,进入文件添加对话框,路径为:Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates

        添加system_stm32f1xx.c文件

316b6fab1a7f4a3489274c4d23a0a483.png

        添加 STM32F1xx_HAL_Driver 源码 

        点击小魔方按钮,进入工程管理界面,选中 Drivers/STM32F1xx_HAL_Driver 分组,然后点击:Add Files,进入文件添加对话框,路径为:Drivers\STM32F1xx_HAL_Driver\Src

        依次添加 stm32f1xx_hal.c、stm32f1xx_hal_cortex.c、stm32f1xx_hal_dma.c、stm32f1xx_hal_gpio.c、stm32f1xx_hal_gpio_ex.c、stm32f1xx_hal_rcc.c、 stm32f1xx_hal_rcc_ex.c、stm32f1xx_hal_uart.c 和 stm32f1xx_hal_usart.c 到该分组下

eae2ca642b3146b3a8a22f6cb6be2721.png

        4.相关设置

        建立好工程需要对一些内容进行设置,主要设置为

        设置 Target 选项卡

        选择 ARM Compiler 版本为:Use default compiler version 5(即 AC5 编译器),主要是AC5对中文的兼容性比较好,但这不是必须设置的,而是推荐设置。同时在Xtal(MHz)如果可以设置需要将其设置成8.

cc8ec176212344d88bc17367c406aac2.png

        设置 Output 选项卡 

        将输出文件夹设置为我们的Output,同时勾选 Create HEX File和Browse Information

4e1bda9bd6d54f9d93f6e8c97e04f4cd.png

        设置 Listing 选项卡 

        和上面一样将输出文件夹设置为我们的Output

 2c16bbbfbde64162b461ba6195d18f8d.png

         设置 C/C++选项卡

3a1628c2e8c0440391ae3617c50720ca.png

        在Define中设置全局宏定义:USE_HAL_DRIVER 和 STM32F103xE,他们之间是用英文逗号隔开的。 

        推荐设置优化等级(Optimization)为-O0,可以得到最好的调试效果,如果要提高优化效果提升性能并降低代码量,可以设置-O1~-O3,数字越大效果越明显,不过也越容易出问题。

         勾选 C99 模式,即使用 C99 C 语言标准。

        我们可以进行头文件包含路径设置,这一步很关键,关乎到程序能否正常找到.h头文件。我们需要将我们要用到的头文件的相关路径加载进来。点击include Paths后面的三个点,并将相关路径加载进来。具体如图所示

08fa70429b6f471f818ea96a063df248.png

建立Protues仿真

protues工程建立

        打开protues,点击新建工程

0a11952db77b40ebab922eb5ec2ac3ca.png

 将工程名字改为LED,并选择合适的路径,推荐和LED工程文件同一个路径

d586fd0898444a9690478417b4527d38.png

  然后正常下一步一直到完成。

元器件的查找和放置

完成后来到原理图绘制界面,我们需要先找到相关元器件,点击左侧元器件的图标,并点击P

015309b10ec24b50b918935048e0cca7.png

        点击P后来到元器件搜索界面,需要先了解一下元器件的名字,这个实验中需要用到的元器件及其在protues中的名字为

STM32单片机stm32f103c8
电阻RES
电容CAP
晶振CRYSTAL
按钮BUTTON
LED灯LED-BULE

        搜索出相关元器件,点击确定,

STM32最小系统

STM32的最小系统通常包括微控制器、时钟电路、电源电路、复位电路以及程序下载端口。它能够维持一个微控制器(MCU)的基本运作,是构建更复杂系统的基础。以下将详细解析这些组成部分,以便更好地理解每个部分的作用和设计要点:

  1. 微控制器(MCU):微控制器是整个系统的核心,负责处理数据和运行程序。在STM32家族中,例如STM32F103C8T6是一款常用的微控制器,集成了CPU、内存、I/O接口和多种外设功能。
  2. 时钟电路:时钟电路作为芯片的心脏提供MCU运行所需的时钟信号,通常包括晶体振荡器和相关的电容。晶振电路确保芯片获得稳定、准确的时钟信号,有助于系统时序的准确性和稳定性。
  3. 电源电路:电源电路为MCU和其他电路提供稳定的电源,可能包括电压调节器和滤波电容。
  4. 复位电路:复位电路确保MCU在上电或需要时能够正确地启动和复位。STM32支持多种复位方式,包括电源复位、系统复位和后备域复位。复位电路设计需考虑低电平复位逻辑,确保重启可靠性。
  5. 程序下载端口:程序下载端口允许程序员将代码烧录到MCU中,并在开发过程中进行调试。这通常包括JTAG、SWD等接口。BOOT电路设计决定芯片的启动方式,如从主闪存存储器启动、系统存储器启动还是内置SRAM启动。

综上所述,STM32的最小系统由若干关键部分组成,每个部分都起着至关重要的作用。了解和掌握这些基础知识,对于成功开发STM32应用具有重要意义。

        在protues仿真中,由于可以直接将程序运行文件放入stm32仿真器件中,同时可以配置电源网络,因此不需要下载电路和电源电路。以下是protues的仿真系统的STM32的最小系统

protues的STM32最小系统仿真

微控制器stm32f103c8t6

5f7cd7e6146f4217b0ad74dc55bae0c5.png

        时钟电路

a4fefeee35374761b154b27023df19ae.png

        双击晶振,将其频率修改为8MHZ

ce966ee22e8a4fe38b00212a9c4e7795.png

         设置C1和C2容值为20pF

add95af203fc4245aff775f8fc32e694.png

         在终端模式中选择地GROUND并放置

84269fbfc16d4eb1b65ac7cece5d1fce.png

        复位电路

1d2a58a042f449209d08afb43b6dc4b8.png

      注意在终端模式放置电源POWER,并将其值改为3.3V

c4b00cada6134611b8123f29d48af82c.png  3e9a8c30546f4c18bd420c209b792839.png

        电源电路

       protues仿真可以忽略

        protues的LED电路仿真

       ce65a395d913403d8f8e4d38b63eee46.png

        LED选择使用高电平驱动,R1是为了限流,仿真中也可以不要。LED的额定电压和额定电流可以双击进行查看并修改

7916721bf8b14893951d37b0247d46b1.png

        例如这个LED的额定电压是2.2V,额定电流是10mA,STM32的GPIO的驱动电压是3.3V,因此需要一个电阻去分担1.1V的电压,并使电路电流维持在10mA,根据欧姆定律可以计算出阻值应该为1.1/0.01=110.

        整体电路

d9e81b438d66449dba9e86f0be3c411a.png

 

程序编写

STM32的GPIO

STM32的GPIO共有八种工作模式,包括模拟输入、浮空输入、下拉输入、上拉输入、开漏输出、推挽输出、复用开漏输出和复用推挽输出。下面是这八种工作模式的详细分析:

  1. 模拟输入模式(AIN):此模式主要用于ADC(模数转换)等需要读取模拟信号的场景。信号直接输入到ADC模块,适用于需要精确测量电压或其他模拟量的情况。

  2. 浮空输入模式(IN_FLOATING):此模式下,GPIO引脚既不接上拉电阻也不接下拉电阻,处于“浮空”状态。由于没有确定的电平,由外部条件决定,这种模式通常用于按键检测等场景,此时外部设备的状态可以直接反映在MCU的输入电平上。

  3. 下拉输入模式(IPD):在此模式下,GPIO引脚内部连接下拉电阻,使得在无外部信号输入时,引脚默认为低电平状态。这种模式常用于需要确保引脚在无信号时为低电平的场景,比如一些基于低电平触发的外部中断。

  4. 上拉输入模式(IPU):与下拉输入模式相对应,上拉输入模式在引脚内部连接了上拉电阻,使得引脚在无信号输入时默认为高电平状态。该模式适用于需要确保引脚在无信号时为高电平的场景,如某些基于高电平或下降沿触发的外部中断。

  5. 开漏输出模式(OUT_OD):在此模式下,GPIO的输出仅通过N-MOS管实现,当输出高电平时,N-MOS管关闭,引脚呈现高阻态,需要外部电阻拉高电平。开漏输出可用于需要“线与”功能的场合,比如I2C总线的通信。

  6. 推挽输出模式(OUT_PP):推挽输出模式通过P-MOS和N-MOS管实现引脚的高低电平输出,具有比开漏输出更强的驱动能力。适用于大多数需要大电流驱动的场合,如LED的驱动。

  7. 复用开漏输出模式(AF_OD):此模式类似于开漏输出,但是输出信号来源于片上外设而非GPIO本身。适用于需要使用片上外设(如I2C)且同时需要开漏特性的场合。

  8. 复用推挽输出模式(AF_PP):类似于推挽输出模式,但是输出信号源自片上外设,支持更强驱动能力同时具备片上外设功能,例如USART的TX引脚或者SPI通信。

总之,STM32 GPIO的八种工作模式各具特色,选择适当的工作模式对于嵌入式系统设计至关重要。合理配置GPIO不仅能够优化硬件资源利用,还能提高系统的可靠性和性能。开发者需根据具体应用场景仔细选择GPIO的工作模式,以满足不同外设和通信需求。

主函数的编写

        引用HAL标准库头文件 #include "stm32f1xx_hal.h" 

        main函数结构

        int main()

        {

                初始化区

                while(1)

                {

                        主要程序运行区

                }

        }   

        我们在初始化区要对芯片进行一些复位或者初始设定操作,主要包括GPIO初始化、外设初始化、系统配置等,在点LED的实验中,只需要最基本的系统初始化和相关GPIO的初始化。系统初始化直接在stm32f1xx_hal.c的142行找到并调用HAL_Init()即可。

        LED相关GPIO初始化,主要做几件事,

        1.使能打开控制该引脚的开关

        2.确定控制LED的是哪个引脚

        3.选择对应引脚的GPIO模式

        4.选择引脚的上下拉状态

        5.设置引脚的速度

        6.设置引脚的初始状态

        根据原理图,LED由PB5控制,因此要先对GPIOB进行使能,并且LED是由STM32引脚直接用高电平驱动的,因此要将GPIO模式设置为推挽输出模式,输出模式的上下拉状态不重要,因为在第六步的时候会进行设置,引脚速度选用高速,初始状态设置成低电平0

     初始化区代码为:

    HAL_Init();


    GPIO_InitTypeDef gpio_init_struct;
    do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0);                                 /* LED时钟使能 */

    gpio_init_struct.Pin = GPIO_PIN_5;                   /* LED引脚 */
    gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;            /* 推挽输出 */
    gpio_init_struct.Pull = GPIO_PULLUP;                    /* 上拉 */
    gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;          /* 高速 */
    HAL_GPIO_Init(GPIOB, &gpio_init_struct);       /* 初始化LED引脚 */

    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);

在主要程序运行区只需要将PB5设置成高电平即可实现点亮LED灯

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);

完整程序:

#include "stm32f1xx_hal.h"

int main(void)
{
    HAL_Init();

    GPIO_InitTypeDef gpio_init_struct;
    do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0);                                 /* LED时钟使能 */

    gpio_init_struct.Pin = GPIO_PIN_5;                   /* LED引脚 */
    gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;            /* 推挽输出 */
    gpio_init_struct.Pull = GPIO_PULLUP;                    /* 上拉 */
    gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;          /* 高速 */
    HAL_GPIO_Init(GPIOB, &gpio_init_struct);       /* 初始化LED引脚 */

    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
    
    while(1)
    { 
       HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
    }
}

仿真验证

MDK点击编译按钮出现以下提示即为生成hex文件

d5c907e5a3ac493ca019b72f4323064d.png

打开protues,打开原理图,双击芯片,选择生成的hex文件9bd995343e7249358e68c5ae33c0c336.png

选择路径为文件夹LED/output中选择led.hex文件,然后点击左下角的仿真开始按钮即可

4a2b742561984fb3a2c2e185c0eea808.png

 

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

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

相关文章

mongodb==安装prisma连接

官网下载mongodb,解压安装 Download MongoDB Community Server | MongoDB 修改bin/mongod.cfg # mongod.conf# for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/# Where and how to store data. storage:dbPat…

前端工程化之手搓webpack5 --【elpis全栈项目】

前端工程化之手搓webpack5 --【elpis全栈项目】 导读 基本流程:输入 – 编译 – 输出 #mermaid-svg-V8Gi7RFNikCuEhax {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-V8Gi7RFNikCuEhax .error-icon{fil…

云备份项目--服务端编写

文章目录 7. 数据管理模块7.1 如何设计7.2 完整的类 8. 热点管理8.1 如何设计8.2 完整的类 9. 业务处理模块9.1 如何设计9.2 完整的类9.3 测试9.3.1 测试展示功能 完整的代码–gitee链接 7. 数据管理模块 TODO: 读写锁?普通锁? 7.1 如何设计 需要管理…

深入了解 ES6 Map:用法与实践

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

大润发易主,被阿里割肉卖了

文丨白念云 零售行业2025年伊始便迎来一则重磅消息:大润发被卖了。 1月1日晚,阿里巴巴集团发布公告,宣布子公司及NewRetail与德弘资本达成交易,以最高约131.38亿港元出售所持高鑫零售(大润发母公司)全部股…

VulnHub—potato-suncs

使用命令扫描靶机ip arp-scan -l 尝试访问一下ip 发现一个大土豆没什么用 尝试扫描一下子域名 没有发现什么有用的信息 尝试扫描端口 namp -A 192.168.19.137 -p- 尝试访问一下端口,发现都访问不进去 查看源代码发现了网页的标题 potato,就想着爆破一下密码 hydr…

docker学习记录:commit,制作自己的镜像

1.清除所有 ktkt-SYS-4028GR-TR2:~$ sudo docker rm -f $(sudo docker ps -aq)2.再操作一次tomcat,修改好,再打成一外镜像 ktkt-SYS-4028GR-TR2:~$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat 9.0 3…

macos安装java8

下载 dmg方式安装 安装 双击pkg运行 输入java -version验证 配置环境变量 cd ~ ls -a输入 ls -a后查看是否已经存在.bash_profile文件,如果已经存在就不需要创建,如果不存在,继续执行下方命令创建文件 touch .bash_profile /usr/l…

【每日学点鸿蒙知识】自定义键盘光标、Cavas绘制、XComponent触发键盘抬起等

【每日学点鸿蒙知识】24.08.25 【每日学点鸿蒙知识】自定义键盘光标、Cavas绘制、XComponent触发键盘抬起等 1、基于自定义键盘如何设置光标位置? 可以参考如下代码: class MyKeyboardController {public onInputChanged?: (value: string) > vo…

在Mysql环境下对数据进行增删改查

一、插入数据: insert into 表名 [(字段名)] values (字段对应的值1,字段对应的值2,…)[,(字段对应的值1,字段对应的值2,…)]; insert into students (id,name,age,height,gender,cls_id,is_delete) values (0,小明,18,180.00,2,1,0)在学生表中插入“小明”数据的…

Web网页制作之JavaScript的应用

---------------📡🔍K学啦 更多学习资料📕 免费获取--------------- 实现的功能:1.通过登录界面跳转至主页面,用户名统一为“admin”,密码统一为“admin123”,密码可显示或隐藏,输入…

Markdown编辑器——Typora(Picgo+Github图床)

Markdown编辑器——Typora(PicgoGithub图床) 文章目录 Markdown编辑器——Typora(PicgoGithub图床)安装Typora安装PicGoPicGo软件下载PicGo的npm版本下载 GitHub图床配置PicGo配置PicGo的软件配置PicGo的npm版本信息配置 配置Typo…

Unity 3D游戏开发从入门进阶到高级

本文精心整理了Unity3D游戏开发相关的学习资料,涵盖入门、进阶、性能优化、面试和书籍等多个维度,旨在为Unity开发者提供全方位、高含金量的学习指南.欢迎收藏。 学习社区 Unity3D开发者 这是一个专注于Unity引擎的开发者社区,汇聚了众多Un…

Python 21:Debug

1. Debug的作用 当程序的预期结果和实际结果不一致时,可以用Debug模式进行调试来定位问题的位置。 2. Debug使用 1)设置断点 点击行号,出现”断点“ 2)执行Debug 点击Debug 或者右键,点击debug进入debug模式 3.Debu…

(CICD)自动化构建打包、部署(Jenkins + maven+ gitlab+tomcat)

一、平滑发布与灰度发布 **什么叫平滑:**在发布的过程中不影响用户的使用,系统不会因发布而暂停对外服务,不会造成用户短暂性无法访问; **什么叫灰度:**发布后让部分用户使用新版本,其它用户使用旧版本&am…

强化学习入门谈

之前我们见识到很多机器学习大展手脚的任务场景了,但是机器学习依旧有很多软肋。 回忆一下,我们之前做的机器学习(深度学习)策略基本都是类似于"supervised learning"的方法,比如你想用CNN实现一个classifi…

colnames看似简单,却能优化数据处理流程

引言 在数据处理和分析中,变量名称是至关重要的,它们决定了数据的可读性和操作的简便性。在R语言中,colnames 函数以其简单的语法设计,提供了高效管理数据框列名的能力,尤其是在复杂的爬虫任务中显得尤为重要。本篇文…

【分布式】Hadoop完全分布式的搭建(零基础)

Hadoop完全分布式的搭建 环境准备: (1)VMware Workstation Pro17(其他也可) (2)Centos7 (3)FinalShell (一)模型机配置 0****)安…

ArcGIS中怎么把数据提取到指定范围(裁剪、掩膜提取)

最近,经常能收到怎么把数据提取到指定范围、栅格数据怎么裁剪、矢量数据怎么裁剪、栅格数据怎么掩膜提取的咨询。 下面是我对这个问题的解决思路: 对于矢量数据: ①首先把数据加载进来 ②软件界面上面的工具栏找到→地理处理→裁剪&#x…

intra-mart环境搭建笔记

一、前言 最近在做intra-mart项目,网上这些笔记比较少,在此做一下笔记。 intra-mart是由日本intra-mart公司开发和销售的工作流平台,国内确实不怎么用,日本企业用的多些,面试时会问有没有intra-mart经验。 这个自学…