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

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

 文件目录:

一:基础知识和理论

1.ARM简介

2.STM32简介

3.STM32命名规范

4.STM32内部功能*

5.STM32接口定义

二:开发环境建立

1.开发板简介

2.ISP程序下载

3.最小系统电路

4.KEIL的安装

5.工程简介与调试流程

6.固件库的安装

7.编程语言介绍

8.固件库的使用

9.添加工程文件

三:其他

1.变量定义

2.ASCLL码与进制对应表

3.printf中符号的作用

4.常用的转义字符

5.如何输出彩色字符


一:基础知识和理论

1.ARM简介

1.什么是ARMARM是英国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.什么是STM32STM32是意法半导体(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和SRAMFLASH:用于存储程序和数据(保存下载的用户程序、保存运行当中的临时数据)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 : 通用异步收发器(没有同步时钟线)IO口选择工作方式种类:GPIO_Mode_AIN 模拟输入:该模式就是可以直接把需要采取的模拟量直接接入STM32的IO口,内置了ADC转换器GPIO_Mode_IN_FLOATING 浮空输入:用处就是提高输入速度,但是需要用“线与”现象来正确的使用该工作方式在此不解释“线与”,可以百度,或Google一下,自行解决GPIO_Mode_IPD 下拉输入:可以直接接按钮的一端,按钮另一端需要外接一个电源,此时需要考虑该IO口的耐压值有些IO口并不能承受5v的电压,STM32默认为3.3V电压GPIO_Mode_IPU 上拉输入:可以直接接按钮的一端,按钮另一端直接接地即可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-15GPIO_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开始编译

三:其他

1.变量定义

u32 a;     //定义32位无符号变量a
u16 a;     //定义16位无符号变量a
u8 a;      //定义8位无符号变量a
vu32 a;    //定义易变的32位无符号变量a
vu16 a;    //定义易变的16位无符号变量a
vu8 a;     //定义易变的8位无符号变量a
uc32 a;    //定义只读的32位无符号变量a
uc16 a;    //定义只读的16位无符号变量a
uc8 a;     //定义只读的8位无符号变量a

2.ASCLL码与进制对应表

3.printf中符号的作用

%d        十进制有符号整数%u        十进制无符号整数号%f        浮点数%s        字符串%c        单个字符%p        指针的值%e        指数形式的浮点数%x,%X    无符号以十六进制表示的整数%o        无符号以八进制表示的整数%g        自动选择合适的表示法%p        输出地址符

4.常用的转义字符

5.如何输出彩色字符

printf("\O33[1;40;32m good!!! \033[Om Hello,NSFocus \n");\033    :转义序列的开始[       :开始定义颜色1       :定义了高亮显示字符40      :背景颜色,表示黑色背景32      :前景颜色,表示绿色\o33[0m :关闭转义序列,是终端默认颜色m       : 表示结束前景      背景      颜色
30        40        黑色
31        41        红色
32        42        绿色
33        43        黄色
34        44        蓝色
35        45        紫红色
36        46        青蓝色
37        47        白色代码          意义0        终端默认设置(黑底白字)1        高亮显示4        使用下划线5        闪烁7        反白显示8        不可见

相关文章:

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

文件目录: 一:基础知识和理论 1.ARM简介 2.STM32简介 3.STM32命名规范 4.STM32内部功能* 5.STM32接口定义 二:开发环境建立 1.开发板简介 2.ISP程序下载 3.最小系统电路 4.KEIL的安装 5.工程简介与调试流程 6.固件库的安装 7.编…...

Qt应用开发(基础篇)——数值微调输入框QAbstractSpinBox、QSpinBox、QDoubleSpinBox

目录 一、前言 二、QAbstractSpinBox类 1、accelerated 2、acceptableInput 3、alignment 4、buttonSymbols 5、correctionMode 6、frame 7、keyboardTracking 8、readOnly 9、showGroupSeparator 10、specialValueText 11、text 12、wrapping 13、信号 二、Q…...

html | 无js二级菜单

1. 效果图 2. 代码 <meta charset"utf-8"><style> .hiddentitle{display:none;}nav ul{list-style-type: none;background-color: #001f3f;overflow:hidden; /* 父标签加这个&#xff0c;防止有浮动子元素时&#xff0c;该标签失去高度*/margin: 0;padd…...

appium的基本使用

appium的基本使用 一、appium的基本使用appium环境安装1、安装Android SDK 2、安装Appium3、安装手机模拟器4、Pycharm安装 appium-python-alicent5、连接appium和模拟器6、Python代码调用appium软件&#xff0c;appium软件在通过adb命令调用android操作系统&#xff08;模拟器…...

Dockerfile构建nginx镜像(编译安装)

Dockerfile构建nginx镜像 1、建立工作目录 [rootdocker ~]# mkdir nginx [rootdocker ~]# cd nginx/ 2、编写Dockerfile文件 [rootdocker nginx]# vim run.sh [rootdocker nginx]# vim Dockerfile #基于的基础镜像 FROM centos:7#镜像作者信息 MAINTAINER Crushlinux <…...

手机屏幕视窗机器视觉定位软硬件-康耐德

【检测目的】 手机屏幕视窗视觉定位 【效果图片】 【安装示意图】 【硬件配置】...

Databend 开源周报第 104 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 从 Kafka 载入数…...

用于医学图像分类的双引导的扩散网络

文章目录 DiffMIC: Dual-Guidance Diffusion Network for Medical Image Classification摘要本文方法实验结果 DiffMIC: Dual-Guidance Diffusion Network for Medical Image Classification 摘要 近年来&#xff0c;扩散概率模型在生成图像建模中表现出了显著的性能&#xf…...

8.2day03 Redis入门+解决员工模块

概述 在我们日常的Java Web开发中&#xff0c;无不都是使用数据库来进行数据的存储&#xff0c;由于一般的系统任务中通常不会存在高并发的情况&#xff0c;所以这样看起来并没有什么问题&#xff0c;可是一旦涉及大数据量的需求&#xff0c;比如一些商品抢购的情景&#xff0…...

通过案例实战详解elasticsearch自定义打分function_score的使用

前言 elasticsearch给我们提供了很强大的搜索功能&#xff0c;但是有时候仅仅只用相关度打分是不够的&#xff0c;所以elasticsearch给我们提供了自定义打分函数function_score&#xff0c;本文结合简单案例详解function_score的使用方法&#xff0c;关于function-score-query…...

SpringBoot第28讲:SpringBoot集成MySQL - MyBatis-Plus方式

SpringBoot第28讲&#xff1a;SpringBoot集成MySQL - MyBatis-Plus方式 本文是SpringBoot第28讲&#xff0c;MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。MyB…...

AI 绘画Stable Diffusion 研究(三)sd模型种类介绍及安装使用详解

本文使用工具&#xff0c;作者:秋葉aaaki 免责声明: 工具免费提供 无任何盈利目的 大家好&#xff0c;我是风雨无阻。 今天为大家带来的是 AI 绘画Stable Diffusion 研究&#xff08;三&#xff09;sd模型种类介绍及安装使用详解。 目前&#xff0c;AI 绘画Stable Diffusion的…...

Docker 命令没有提示信息

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; linux安装docker后发现使用docker命令没有提示功能&#xff0c;使用 Tab 键的时候只是提示已有的文件 解决方案&#xff1a; 提示&#xff1a;这里填写该问题的具体解决方案&#xff1a; Bash命令补全 Docke…...

springboot第33集:nacos图

./startup.sh -m standalone Nacos是一个内部微服务组件&#xff0c;需要在可信的内部网络中运行&#xff0c;不可暴露在公网环境&#xff0c;防止带来安全风险。Nacos提供简单的鉴权实现&#xff0c;为防止业务错用的弱鉴权体系&#xff0c;不是防止恶意攻击的强鉴权体系。 鉴…...

学习gRPC(一)

gRPC 简介 根据官网的介绍&#xff0c;gRPC 是开源高性能远程过程调用&#xff08;RPC&#xff09;框架&#xff0c;可以在任何环境中运行。它可以有效地连接数据中心内部和数据中心之间的服务&#xff0c;并为负载平衡、跟踪、运行状况检查和身份验证提供支持。同时由于其建立…...

【二进制安全】堆漏洞:Double Free原理

参考&#xff1a;https://www.anquanke.com/post/id/241598 次要参考&#xff1a;https://xz.aliyun.com/t/6342 malloc_chunk 的源码如下&#xff1a; struct malloc_chunk { INTERNAL_SIZE_T prev_size; /*前一个chunk的大小*/ INTERNAL_SIZE_T size; /*当前chunk的…...

python之open,打开文件时,遇到解码错误处理方式

在Python中&#xff0c;当我们打开一个文件时&#xff0c;我们可以指定文件的编码方式。如果文件的编码方式与我们指定的编码方式不同&#xff0c;那么就会出现解码错误。为了避免这种情况&#xff0c;我们可以使用errors参数来指定如何处理解码错误。 errors参数用于指定解码…...

STM32 CAN通信-CubeMX环境下CAN通信程序的编程与调试经验

文章目录 STM32 CAN通信-CubeMX环境下CAN通信程序的编程 STM32 CAN通信-CubeMX环境下CAN通信程序的编程 STM32F103ZE芯片 CAN通信测试代码&#xff1a; #include "main.h" #include "can.h"CAN_HandleTypeDef hcan1;void SystemClock_Config(void);int ma…...

windows创建不同大小的文件命令

打开命令窗口&#xff08;windowsR输入cmd打开&#xff09; 输入&#xff1a;fsutil file createnew C:\Users\Desktop\fileTran\10M.txt 10240000&#xff0c;创建10M大小的文件。 文件若存在需要先删除。...

Attention Is All You Need

Attention Is All You Need 摘要1. 简介2. Background3. 模型架构3.1 编码器和解码器堆栈3.2 Attention3.2.1 缩放的点积注意力&#xff08;Scaled Dot-Product Attention&#xff09;3.2.2 Multi-Head Attention3.2.3 Attention 在我们模型中的应用 3.3 Position-wise前馈网络…...

手写线程池 - C++版 - 笔记总结

1.线程池原理 创建一个线程&#xff0c;实现很方便。 缺点&#xff1a;若并发的线程数量很多&#xff0c;并且每个线程都是执行一个时间较短的任务就结束了。 由于频繁的创建线程和销毁线程需要时间&#xff0c;这样的频繁创建线程会大大降低 系统的效率。 2.思考 …...

PHP 容器化引发线上 502 错误状态码的修复

最后更新时间 2023-01-24. 背景 笔者所在公司技术栈为 Golang PHP&#xff0c;目前部分项目已经逐步转 Go 语言重构&#xff0c;部分 PHP 业务短时间无法用 Go 重写。 相比 Go 语言&#xff0c;互联网公司常见的 Nginx PHP-FPM 模式&#xff0c;经常会出现性能问题—— 特…...

QT中UDP之UDPsocket通讯

目录 UDP&#xff1a; 举例&#xff1a; 服务器端&#xff1a; 客户端&#xff1a; 使用示例&#xff1a; 错误例子并且改正&#xff1a; UDP&#xff1a; &#xff08;User Datagram Protocol即用户数据报协议&#xff09;是一个轻量级的&#xff0c;不可靠的&#xff0…...

【C语言】10-三大结构之循环结构-1

1. 引言 在日常生活中经常会遇到需要重复处理的问题,例如 统计全班 50 个同学平均成绩的程序求 30 个整数之和检查一个班级的同学程序是否及格要处理以上问题,最原始的方法是分别编写若干个相同或相似的语句或者程序段进行处理 例如:处理 50 个同学的平均成绩可以先计算一个…...

Windows下RocketMQ的启动

下载地址&#xff1a;下载 | RocketMQ 解压后 一、修改runbroker.cmd 修改 bin目录下的runbroker.cmd set "JAVA_OPT%JAVA_OPT% -server -Xms2g -Xmx2g" set "JAVA_OPT%JAVA_OPT% -XX:MaxDirectMemorySize15g" set "JAVA_OPT%JAVA_OPT% -cp %CLASSP…...

linux内核升级 docker+k8s更新显卡驱动

官方驱动 | NVIDIA在此链接下载对应的显卡驱动 # 卸载可能存在的旧版本nvidia驱动(如果没有安装过可跳过&#xff0c;建议执行) sudo apt-get remove --purge nvidia* # 安装驱动需要的依赖 sudo apt-get install dkms build-essential linux-headers-generic sudo vim /etc/mo…...

express学习笔记2 - 三大件概念

中间件 中间件是一个函数&#xff0c;在请求和响应周期中被顺序调用&#xff08;WARNING&#xff1a;提示&#xff1a;中间件需要在响应结束前被调用&#xff09; 路由 应用如何响应请求的一种规则 响应 / 路径的 get 请求&#xff1a; app.get(/, function(req, res) {res…...

Steam搬砖蓝海项目

这个项目早在很久之前就已经存在&#xff0c;并且一直非常稳定。如果你玩过一些游戏&#xff0c;你一定知道Steam是什么平台。Steam平台是全球最大的综合性数字发行平台之一&#xff0c;玩家可以在该平台购买、下载、讨论、上传和分享游戏和软件。 今天我给大家解释一下什么是…...

就业并想要长期发展选数字后端还是ic验证?

“就业并想要长期发展选数字后端还是ic验证&#xff1f;” 这是知乎上的一个热点问题&#xff0c;浏览量达到了13,183。看来有不少同学对这个问题感到疑惑。之前更新了数字后端&数字验证的诸多文章&#xff0c;从学习到职业发展&#xff0c;都写过&#xff0c;唯一没有做过…...

当服务器域名出现解析错误的问题该怎么办?

​  域名解析是互联网用户接收他们正在寻找的域的地址的过程。更准确地说&#xff0c;域名解析是人们在浏览器中输入时使用的域名与网站IP地址之间的转换过程。您需要站点的 IP 地址才能知道它所在的位置并加载它。但&#xff0c;在这个过程中&#xff0c;可能会出现多种因素…...