STM32基础入门学习笔记:基础知识和理论 开发环境建立

news2024/12/23 13:18:40

 文件目录:

 一:基础知识和理论

1.ARM简介

2.STM32简介

3.STM32命名规范

4.STM32内部功能*

5.STM32接口定义

二:开发环境建立

1.开发板简介

2.ISP程序下载

3.最小系统电路

4.KEIL的安装

5.工程简介与调试流程

6.固件库的安装

7.编程语言介绍

8.固件库的使用

9.添加工程文件


 一:基础知识和理论

1.ARM简介

1.什么是ARM
    ARM是英国Acorn有限公司设计的低功耗成本的第一款“RISC微处理器”

    ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势



2.ARM公司介绍
    ARM公司是一家英国半导体设计公司,成立于1990年,总部位于剑桥
    ARM公司的全称是Advanced RISC Machines Ltd,中文翻译为安谋公司
    ARM公司的主要业务是设计和授权处理器核心IP(Intellectual Property,知识产权)



3.ARM内核发展历史如下:
    ARMv0:基本版本,包含ARM程序和Thumb程序
    ARMv1:支持16位指令和32位指令
    ARMv2:支持Thumb指令。
    ARMv3:包含ARMv3-T和ARMv3-R,是最早的32位处理器
    ARMv4:包含ARMv4T和ARMv4,增加了Java指令
    ARMv5:包含ARMv5T和ARMv5,增加了媒体指令
    ARMv6:增加了安全指令和本地中断向量
    ARMv7:分为ARMv7-A、ARMv7-R和ARMv7-M,增加了向量化指令
    ARMv8:引入64位指令集
    ARMv9:预计将引入矢量扩展指令
    Cortex:是ARM公司开发的最新一代处理器
            包括Cortex-A、Cortex-R和Cortex-M等系列,具有更高的性能、更低的功耗和更多的功能

2.STM32简介

1.什么是STM32
    STM32是意法半导体(ST)公司基于ARM公司的Cortex-M3内核生产的32位单片机。市场上常见的ARM芯片有:
    STM32系列
    M系列:如M0、M3、M4等
    A系列:如A5、A7等
    R系列:如R5、R7等
    ARM Cortex-A:如Cortex-A53、Cortex-A72等



2.Cortex内核系列说明
    Cortex内核系列是ARM公司开发的最新一代处理器
    包括Cortex-A、Cortex-R和Cortex-M等系列,具有更高的性能、更低的功耗和更多的功能
        Cortex-A系列:是针对高级应用领域的处理器,具有更高的性能和功能
        Cortex-R系列:是针对实时应用领域的处理器,具有快速响应和实时性
        Cortex-M系列:是针对微控制器和低成本应用领域的处理器,具有低功耗、小尺寸和简单编程等特点
    
    在Cortex内核系列中,不同的处理器系列所采用的技术和功能也不相同,可以根据不同的应用领域和需求选择合适的处理器系列



3.市场上常见的ARM芯片
    M系列:M0、M3、M4等
    此外,还有ARM7TDMI、StrongARM ARM720T、ARM9TDMI、ARM922T、ARM940T、RM946T、ARM966T、ARM10TDM1等



4.了解ST公司
    ST公司全称意法半导体集团,是全球最大的半导体公司之一,
    于1987年由意大利的SGS微电子公司和法国Thomson半导体公司合并而成,1998年5月公司名称改为意法半导体有限公司

    意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,
    在分立器件、手机相机模块和车用集成电路领域居世界前列



5.STM32系列之间的关系
    STM32系列是基于ARM Cortex-M内核的32位微控制器

    系列:STM32F1、STM32F4、STM32L1等
    内核:M0、M3、M4等    每个内核又分为主流、高性能和低功耗等不同类型
        STM32F1系列属于Cortex-M3内核,采用ARMv7-M架构
        STM32F4系列属于Cortex-M4内核,采用ARMv7-ME架构
        STM32L系列属于Cortex-M0+内核

3.STM32命名规范

以STM32F103C8T6芯片为例,分析名称各字段的含义
STM32F103C8T6芯片的名称各字段含义如下:
    ST:芯片制造商名称,表示该芯片由意法半导体公司生产

    STM32:芯片系列名称,表示该芯片属于STM32系列

    F:芯片子系列名称,表示该芯片属于STM32F系列
    103:芯片型号,表示该芯片是STM32F103系列的一种具体型号
    C:芯片封装类型,表示该芯片采用COB-44封装
    8:芯片引脚数量,表示该芯片有8个引脚
    T:芯片温度范围,表示该芯片的工作温度范围为-40℃到85℃
    6:芯片的批次号,表示该芯片是第六批生产的产品

通过分析芯片的名称字段了解芯片:制造商、系列、子系列、型号、封装类型、引脚数量、工作温度范围、批次号等信息

4.STM32内部功能*

以下是STM32内部功能的基础知识介绍: 

1.ARM核心:STM32采用Cortex-M内核,属于32位处理器,具有高性能和低功耗的特点


2.内存:STM32内部包含FLASH和SRAM
    FLASH:用于存储程序和数据
    SRAM :用于临时存储数据


3.存储器:存储程序和数据、存储芯片参数
    RAM:Random Access Memory,随机存储器,分为静态RAM(SRAM)和动态RAM(DRAM)两种
        SRAM常被用作CPU的一级缓存和二级缓存,价格昂贵
        DRAM保留数据时间很短,速度比SRAM慢,但是要比ROM快
    ROM:Read Only Memory,只读存储器,掉电不丢失数据。STM32的ROM大小根据型号不同而有所差异
    FLASH ROM:Flash Read Only Memory,闪存只读存储器,有主存储块和信息块组成
               FLASH主存储区从0x0800 0000地址开始,不同系列器件有不同大小,这里存放为用户烧入的代码、常量和已经初始化的全局变量的值
    EEPROM:Electrically Erasable Programmable Read Only Memory,带电可擦可编程只读存储器,可以通过电子擦除,但是写入时间很慢


4.时钟:STM32内部包含时钟源,可以为系统提供准确的计时基准时钟信号
    实时时钟(RTC):是STM32内部的一个功能,用于提供实时时间信息
                     通常使用精度较高的晶体振荡器作为时钟源,为系统提供精确的时间基准
    高速外部时钟(HSE):由外接高频晶振产生,一般采用8MHz的晶振;为STM32的CPU和其他内部外设提供时钟信号,是系统时钟的基础
                        HSE的精度较高,可以保证系统的实时性和稳定性
    低速内部时钟(LSE):由内部低频RC电路产生的,通常使用32.768KHz的频率;用于驱动实时时钟提供时钟信号
                        精度更高,因为它使用内部RC电路产生时钟信号,而HSE的精度可能会受到外部环境的影响


5.复位和电源:STM32具有上电复位和掉电复位功能,是由芯片内部的VDD和VSS引脚完成的
             同时内部集成电源管理单元,可对电源进行控制和管理
    上电复位:当VDD引脚检测到电压上升到1.8V时,芯片会从待机状态恢复到正常工作状态的过程
    掉电复位:当VDD引脚检测到电压下降到1.8V时,芯片会从正常工作状态进入待机状态的过程
              掉电复位后,需要重新对芯片进行初始化才能重新开始工作


6.电压监控:STM32具有电压监控功能,可对系统电压进行监测和保护,确保系统稳定运行


7.低功耗:STM32具有多种低功耗模式,如睡眠、停止和待机模式,可大大降低系统功耗
    睡眠模式:Cortex-M3内核停止工作,但是CPU供电1.8V不持续,而是进入低功耗模式,此时只有RTC和其他低功耗外设保持供电
    停止模式:全部时钟都停止,CPU电源1.8V没断。唤醒后从原来位置运行
    待机模式:时钟全断,CPU电源1.8V也断,唤醒后程序又一次运行

8.ADC:STM32内部集成多达16个通道的12位ADC,可用于模拟信号的采集和转换


9.DMA:一种高效的数据传输方式,通过DMA控制器将需要传输的数据从内存直接传输到设备或从设备传输到内存,而不需要经过中央处理单元(CPU)的干预
    可以大大提高数据传输的效率,特别适用于需要大量数据传输的场景,如磁盘驱动器、网络接口卡等
    单通道DMA:只有一个DMA控制器,只能进行单方向的数据传输
    多通道DMA:则有多个DMA控制器,可以同时进行多个方向的数据传输


10.IO端口:是计算机系统中的一种硬件资源,用于连接外部设备和主机之间的数据传输
           IO端口通常是一组特定的地址的寄存器,可以被CPU直接访问和操作
           每个IO端口都有唯一的地址,通过地址可以访问对应的寄存器进行数据读写操作

           统一编址:是将IO端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问IO端口,又称存储器映射方式
           独立编址:是IO端口有自己独立的地址空间,需要使用专门的IO指令进行访问


11.IO接口:STM32具有多种IO接口,如GPIO、SPI、USART等,可连接各种外设进行数据通信
    GPIO接口(General Purpose Input/Output)是一种通用输入/输出接口
        可以用于连接外部设备和芯片之间的数据传输
        GPIO接口通常由一组引脚组成,每个引脚都可以被配置为输入或输出模式,用于传输数字信号
    SPI接口(Serial PeripheralInterface)是一种同步串行通信接口
        常用于连接微控制器和外部设备之间的通信
        SPI接口有主从模式,主模式和从模式设备分别负责数据传输的起始和结束
    USART接口(UniversalAsynchronousReceiverTransmitter)是一种串行通信接口,常用于微控制器和其他设备之间的通信
        USART:通用同步/异步收发器(带同步时钟线)
        UART : 通用异步收发器(没有同步时钟线)


12.中断:STM32支持多种中断模式,包括外部中断、定时器中断、ADC中断等,可实现快速响应和处理
    外部中断:是指由外部设备或外部信号触发的中断
             当外部设备或信号触发中断时,系统会暂停当前任务的执行,并跳转到中断处理程序中处理中断事件
             例如按键、传感器等
    定时器中断:是指由定时器产生的中断
               定时器是一种计数器,可以根据设定的时间间隔或者到达的计数值产生中断
               定时器中断通常用于实现系统的定时功能,例如定时采样、定时唤醒等
    ADC中断:是指由模数转换器(ADC)触发的事件
             ADC可以将模拟信号转换为数字信号,当ADC完成一次转换后,可以产生一个中断信号,            
             通知系统来读取转换结果。ADC中断通常用于实现模拟信号的采样和数字信号的处理


13.调试模式:STM32支持多种调试模式,如JTAG、SWD等,可方便地进行调试和开发
    JTAG调试模式:是一种基于边界扫描的调试模式,主要用于芯片内部测试
                 它通过连接芯片的JTAG引脚,实现芯片的在线编程和调试
                 JTAG调试模式需要硬件支持,比如边界扫描芯片和JTAG接口
    SWD调试模式:是一种串行调试模式,用于访问ARM芯片的调试接口
                 它通过连接芯片的SWD引脚,实现芯片的在线编程和调试
                 SWD调试模式比JTAG调试模式更加灵活,可以在有限的的空间内实现更高效的调试      
                 SWD调试模式需要硬件支持,比如主从调试器和SWD接口


14.定时器看门狗:STM32内部集成多个定时器和看门狗,可实现定时任务和系统复位
    滴答定时器:常用于延时或实时系统的心跳时钟
                它通常是一个24位的倒计数定时器,从预装载值到0,计数器的值会自动装载到重装载寄存器中
                只要不将其使能位清除,它就会永远不停,即使在芯片在睡眠模式下也能工作


15.通信接口:STM32具有多种通信接口,如UART、SPI、I2C、USB、CNA等,可实现与其他外设或主机的通信
    UART通信接口:是一种异步通信接口,通常用于在不同的设备之间进行串行通信
    SPI通信接口:是一种同步通信接口,通常用于与外部传感器、存储器等设备进行高速数据传输
    I2C通信接口:是一种同步串行通信接口,通常用于与外部传感器、存储器等设备进行数据传输
    USB通信接口:是一种通用串行总线接口,通常用于与计算机或其他设备进行高速数据传输
    CAN通信接口:通信接口是一种串行通信协议,常用于嵌入式系统中的实时通信

16.CRC校验:循环冗余校验码
    根据固定的生成多项式计算出任32位全字的CRC计算结果,用于核实数据传输或数据存储的正确性和完整性


17.芯片ID:内部拥有一个独一无二的,这个ID号可以提供给开发者很多优越的功能
    把ID做为用户最终产品的序列号
    需要保证安全性的功能代码运行前,通过校验此ID,保证最终产品某些功能的安全性
    用ID配合加解密算法,对芯片内部的代码进行加加密,以保证用户产品的安全性和不可复制性


18.GPIO:输入输出接口
    GPIO 分组:PA0-15 、PB0-15 、PC0-15 、PD0-15 、PE0-15

    GPIO_Mode_AIN模拟输入
    GPIO_Mode_IN_FLOATING浮空输入
    GPIO_Mode_IPD下拉输入
    GPIOMode_IPu上拉输入
    GPIO_Mode _out_PP推挽输出
    GPIO_Mode_out_oD开漏输出
    GPIO_Mode_AF_PP复用推挽输出
    GPIO_Mode_AF_oD复用开漏输出

5.STM32接口定义

介绍STM32F103C8T6芯片的接口定义,各功能对应在接口上的关系:
GPIO接口:STM32F103C8T6芯片具有多达8个的GPIO接口,可控制数字信号的

DAC接口:STM32F103C8T6芯片具有1个12位DAC接口,可用于输出模拟信号

I2C接口:STM32F103C8T6芯片具有多达2个I2C接口,可与外部设备进行串行数据通信

TIM接口:STM32F103C8T6芯片具有多达4个TIM接口,可用于定时器、计数器和PWM等应用

DCMI接口:STM32F103C8T6芯片具有DCMI接口,可用于图像数据的采集和编码

二:开发环境建立

1.开发板简介

1.结构:
    中央处理器(CPU):开发板的核心部件,负责指令执行和计算
    存储器:包括内存(RAM)和存储器(ROM),用于存储程序和数据
    输入输出接口:用于连接外部设备和开发板进行数据通信
    电源模块:用于提供开发板所需的电源
    特殊功能接口:如JTAG接口、串口等,用于调试和开发



2.功能:
    开发板与外部设备的通信:通过输入输出接口与外部设备进行数据通信
    程序下载与调试:通过特殊功能接口将程序下载到开发板中进行调试和开发
    电源管理:开发板可以管理电源,为不同设备提供适当的电源
    嵌入式系统开发:开发板可以作为嵌入式系统的开发平台,进行系统开发和应用程序开发



3.给开发板上电基本使用如下:
    a 连接开发板与电源适配器,确保正负极正确
    b 连接开发板与显示器、键盘、鼠标等外部设备
    c 打开电源开关,开发板启动
    d 根据需要进入开发环境,如Linux或Android等操作系统
    e 进行开发或使用,如编写代码、编译、下载程序、运行应用程序等

2.ISP程序下载

写好的程序,通过串口从电脑端写入到单片机当中的过程
1.插入udb接口

2.安装usb驱动程序:
   电脑——>设置——>设备——>设备管理器——>端口——>usb serial port
   没有就需要手动安装(右键——>更新——>添加)或者(对应驱动——>右键——>管理运行安装)或(驱动精灵安装)

3.ISP下载器(FlyMCU)



4.开始使用
    4.1 FlyMCU中点击——>搜索串口——>搜索到点击确定
    4.2 联机下载时的程序文件——>选择写.hex文件——>勾选编程前重装文件
    4.2 STMISP——>勾选 校验 编程后执行
        选项字节区——>打勾
        设定选项字节等——>STM32F1选项设置——>设置FF阻止读出——>采用这个设置
    4.3 点击开始编程




如果下载慢
    电脑——>设置——>设备——>设备管理器——>端口——>usb serial port——>右键——>属性    
    Port Settings——>Advanced——>BM Options——>Latency TImer——>设置成1——>OK

3.最小系统电路

用最少的电路组成可以实现单片机工作的系统。通常最小系统包含以下几个组成部分:
    需要外接电路
        电源电路:为整个系统提供电能
        时钟电路:为单片机提供时钟信号,推动处理器执行指令
        复位电路:当系统出现程序跑飞等情况时,可以通过复位电路进行复位,重新执行程序
    不需要外接电路
        内核
        存储器

启动模式选择引脚 

FLASH ISP:是从FLASH中启动,运行用户程序(正常启动)
BootLoader:是ST公司制作了一段用于ISP下载的程序,用户不可修改
RAM ISP:是从SRAM中启动,主要用于调试阶段的下载。下载速度快,但断电丢失

 

4.KEIL的安装

软件下载安装

工程结构

    CMSIS——内核驱动程序: 包含c⽂件,ST公司官⽅提供的,对arm内核和mcu系统的基础⽂件,【⼀般不做修改】
    LIB——内部功能的基本函数库: 包含c⽂件,st公司提供,需要根据⽤户的【需求对其进⾏增减】
    STARTUP——单⽚机启动程序: 包含asm⽂件,st公司提供,负责启动,【⼀般不做修改】
    USER——⽤户程序(包括主函数): 包括main.c⽂件和stm32f10x_it.c⽂件。前者为⽤户程序,【需要⽤户进⾏修改】;后者【不要修改】
    BASIC——内部功能的驱动函数: 包括dealy.c和sys.c。前者为【⽤户编写的延时程序】;后者为st公司提供,【不作修改】
    HARDWARE——外部硬件的驱动程序: 包括led.c和key.c两个⽂件,驱动如led,oled、继电器、微动开关之类。【均为⽤户⾃⼰编写】,需根据需求修改

5.工程简介与调试流程

工程简介:STM32工程包括多个模块,包括CMSIS、Lib、Startup、User等模块
    CMSIS模块:提供内核驱动程序
    Lib模块:提供内部功能的基本函数库
    Startup模块:提供单片机启动程序
    User模块:提供用户程序(包括主函数)
    Basic模块:内部功能的驱动程序
    Hardware模块:外部硬件的驱动程序



调试流程:
    首先进行程序编译,输出hex文件,然后使用调试工具(如FlyMcu)选中hex文件进行编译,并设置核心板为FLASH ISP模式
    接下来,可以使用build命令编译修改后的程序,rebuild命令重新编译程序

6.固件库的安装

keil固件库的安装 库函数的配置

7.编程语言介绍

C语言和汇编语言都是人类易学易懂的语言

通过编译器(keil这样的软件)将代码转换为HEX或Bin文件,即单片机认识的语言,可直接在FLASH里读取运行的机械语言

8.固件库的使用

参考固件库用户手册 

包括程序的编写、编译、调试和下载等,一般来说,使用固件库进行开发的过程如下:
    1.选取合适的固件库,并下载安装
    2.在开发环境中添加固件库的头文件和库文件路径
    3.在程序中引入所需的头文件
    4.使用固件库提供的函数来实现所需功能
    5.进行编译、调试和下载等操作,确保程序能够正常运行
    6.在编写程序时,要按照固件库的要求进行参数传递和数据类型定义
    7.在程序中应该进行错误处理,避免出现异常情况
    8.在使用固件库时,要注意其性能和资源占用情况,避免出现资源冲突或性能问题

9.添加工程文件

第一步:文件夹下面新建


第二步:品字型图标,Groups下新建添加


第三步:魔法棒下面lnclude Paths,新建添加路径


第四步:宏定义 在"xxxx.c"文件里面添加(#include "xxxx.h")
        作用是关联两个文件


第五步:点击rebuild开始编译

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

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

相关文章

K3s vs K8s:轻量级对决 - 探索替代方案

在当今云原生应用的领域中,Kubernetes(简称K8s)已经成为了无可争议的领导者。然而,随着应用规模的不断增长,一些开发者和运维人员开始感受到了K8s的重量级特性所带来的挑战。为了解决这一问题,一个名为K3s的…

【数据结构与算法】单链表反转、双链表反转(含相关题型)

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 链表反转 1. 单链表反转 实现2. 双链表反转 实…

IT技术中最被人忽略的网络安全方向~超乎你的想象~

正文 听说网络工程师已成为IT人的最底层了?标题的问题是知乎上很多网工在提问的问题之一,总是在说网工行业已经不行了、网工成为最低成、网工已经没落了…… 今天针对这些问题,我们先明确一个看法: 这些都是对网工行业的误解。 …

Vue(五)git

Vue 三十二、git1.工具引入2.本地仓库3.远程仓库4.两人协作(1)非冲突(2)冲突(3)可视化 5.分支6.vue项目git注意 三十三、三十四、三十五、 三十二、git 1.工具引入 项目内容合并 传统:U盘&…

Twitter 劲敌 Threads,“魔改”了哪些 Python 技术栈?

Meta 创始人 Mark Zuckerberg 昨天在 Threads 上宣布,周三正式上线的 Threads 注册量已突破三千万。 Threads 是一个基本文本的社交应用,由 Instagram 团队开发。虽然它在功能上还无法真正取代 Twitter,但目前看来事实上已是 Twitter 的替代方…

前端学习--vue2--插槽

写在前面: 这个用法是在使用组件和创建组件中 文章目录 介绍简单使用多个插槽省写默认/后备内容作用域插槽常用实例Element-ui的el-table 废弃用法slot attributeslot-scope attribute 介绍 我们在定义一些组件的时候,由于组件内文字想要自定义&#…

minio-分布式文件存储系统

minio-分布式文件存储系统 minio的简介 MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置…

手机图片怎么转换成pdf?掌握这几种转换方法就够了

手机图片怎么转换成PDF?现在,随着手机拍照功能的不断升级,手机摄影已成为人们记录生活、工作的一种重要方式。但是,有时候需要将手机拍摄的图片转换成PDF,以便更好地编辑和分享。那么,如何将手机图片转换成…

vue3常用API之学习笔记

目录 一、setup函数 vue2与vue3变量区别 二、生命周期 三、reactive方法 四、ref方法 1、简介 2、使用 3、ref与reactive 4、获取标签元素或组件 五、toRef 1、简介 2、ref与toRef的区别 六、toRefs 七、shallowReactive 浅reactive 1、简介 2、shallowreactiv…

详解顺序表功能

前言 随着我们C语言的不断深入学习,我们要开始学习一点数据结构来增加我们的内功了,虽说现在很多高级语言的顺序表,链表等可以不用自己实现,但在C语言中是需要我们自己来实现的,这并不能说明C语言和其他语言比C语言很…

AP AUTOSAR在软件定义汽车生态系统中的角色

AP AUTOSAR在软件定义汽车生态系统中的角色 AP AUTOSAR是AUTOSAR(汽车开放系统架构)的最新版本之一,它是一种面向服务的软件平台,旨在满足未来汽车电子系统的需求,特别是高性能计算、高带宽通信、软件无线更新(OTA)等方面。 AP AUTOSAR在软件定义汽车生态系统中扮演着…

【以图搜图】Python实现根据图片批量匹配(查找)相似图片

目的:可以解决在本地实现根据图片查找相似图片的功能 背景:由于需要查找别人代码保存的图像的命名,但由于数据集是cifa10图像又小又多,所以直接找很费眼睛,所以实现用该代码根据图像查找图像,从而得到保存…

azure刷新令牌失效 The grant was issued for a different client id

博主在以msal-node这个认证库实现electron客户端混合h5授权登录后,在某一次访问令牌过期后并且通过已存储的刷新令牌获取新的访问令牌和刷新令牌时,在控制台日志看到了The grant was issued for a different client id报错。 Error refreshing token: Se…

产品经理都在收藏的10个原型设计工具!

在产品经理的设计工作中,原型工具是必不可少的,今天本文将会为大家分享8个好用的原型工具,助力产品经理实现高效设计,一起来看看吧! 1、即时设计 即时设计是一款优秀的原型工具,它可以在网页中直接运行并…

CS162 13-17 虚拟内存

起源 为啥我们需要虚拟内存-----------需求是啥? 可以给程序提供一个统一的视图,比如多个程序运行同一个代码段的话,同一个kernel,就可以直接共享 cpu眼里的虚拟内存 无限内存的假象 设计迭代过程 为啥这样设计? 一…

P2404 自然数的拆分问题

题目 思路 最简单的dfs题之一 只需要一点点小优化 代码 #include<bits/stdc.h> using namespace std; const int maxn55; int n; int ans[maxn],s; void print(int tot) { for(int i1;i<tot-1;i) cout<<ans[i]<<""; cout<<ans[tot-1]&…

Spark-任务怎么切分

&#xff08;1&#xff09;Application&#xff1a;初始化一个SparkContext即生成一个Application&#xff1b; &#xff08;2&#xff09;Job&#xff1a;一个Action算子就会生成一个Job&#xff1b; &#xff08;3&#xff09;Stage&#xff1a;Stage等于宽依赖的个数加1&…

速成版-带您2天学完vue3框架+Element-plus框架

Vue是渐进式的JavaScript框架&#xff0c;易学易用&#xff0c;性能出色&#xff0c;适用场景丰富的web前端框架&#xff0c;vue算是目前最火的web前端框架之一&#xff0c;使用vue可以提升开发体验。Vue组件可以按照两种不同的风格写&#xff0c;即选项式api和组合式api两种。…

数据中心电子电气设备常见的五种地线种类和做法

数据中心机房计算机系统的集成化程度很高&#xff0c;其正常工作对环境的要求很严格。接地&#xff0c;是指电力系统和电气装置的中性点、电气设备的外露导电部分和装置外导电部分经由导体与大地相连。其作用主要是防止人身遭受电击、设备和线路遭受损坏、预防火灾和防止雷击、…

7.复合类型注解

目录 1 联合类型 2 交叉类型 2.1 基本使用 2.2 与继承的区别 1 联合类型 联合类型是 或 的关系 联合类型表示这个变量可以是多个类型&#xff0c;比如 a 可以是 数字或字符串 使用联合类型后改变到指定的类型就不会报错了 2 交叉类型 2.1 基本使用 交叉类型是 …