基于汇编和C语言STM32流水灯依次闪烁

2023-05-16

目录

一、初始化

1.地址映射和寄存器映射

1.1 总线基地址

1.2 外设基地址

1.3 外设寄存器地址

1.4接线

1.4.1 将串口USB转TTL线与stm32核心板连接如图所示

1.4.2 并且要设.BOOT0 与 BOOT1 配置启动方式。 

1.5 程序下载

1.6 总的实际连线图

二、用C语言寄存器实现流水灯

2.1 工程文件

2.1.1 main.c

2.1.2加入设备

2.2 编译生成hex文件

2.3 用mcuisp烧入stm32如1.5步骤所示。

2.4 实验成果​

 三、汇编语言实现流水灯

3.1 汇编代码

3.2添加工程文件

3.4 烧录程序 

 3.5实验成果

 四、心得


一、初始化

1.地址映射和寄存器映射

1.1 总线基地址

总线名称总线基地址相对外设基地址的偏移
APB10x4000 00000x0
APB20x4001 00000x0001 0000
AHB0x4001 80000x0001 8000

1.2 外设基地址

外设名称外设基地址相对 APB2 总线的地址偏移
GPIOA0x4001 08000x0000 0800
GPIOB0x4001 0C000x0000 0C00
GPIOC0x4001 10000x0000 1000
GPIOD0x4001 14000x0000 1400
GPIOE0x4001 18000x0000 1800
GPIOF0x4001 1C000x0000 1C00
GPIOG0x4001 20000x0000 2000

1.3 外设寄存器地址

本文要用到GPIOA,GPIOB,GPIOC。

下列表格是通过查表得出如果需要了解寄存器地址原理请访问STM32寄存器的简介、地址查找,与直接操作寄存器_geekYatao-CSDN博客_stm32寄存器

STM32从地址到寄存器_geekYatao-CSDN博客_stm32寄存器地址

寄存器名称寄存器地址相对 GPIOA 基址的偏移
GPIOA_CRL0x4001 08000x00
GPIOA_CRH0x4001 08040x04
GPIOA_IDR0x4001 08080x08
GPIOA_ODR0x4001 080C0x0C
GPIOA_BSRR0x4001 08100x10
GPIOA_BRR0x4001 08140x14
GPIOA_LCKR0x4001 08180x18
寄存器名称寄存器地址相对 GPIOB 基址的偏移
GPIOB_CRL0x4001 0C000x00
GPIOB_CRH0x4001 0C040x04
GPIOB_IDR0x4001 0C080x08
GPIOB_ODR0x4001 0C0C0x0C
GPIOB_BSRR0x4001 0C100x10
GPIOB_BRR0x4001 0C140x14
GPIOB_LCKR0x4001 0C180x18
寄存器名称寄存器地址相对 GPIOC 基址的偏移
GPIOC_CRL0x4001 10000x00
GPIOC_CRH0x4001 10040x04
GPIOC_IDR0x4001 10080x08
GPIOC_ODR0x4001 100C0x0C
GPIOC_BSRR0x4001 10100x10
GPIOC_BRR0x4001 10140x14
GPIOC_LCKR0x4001 10180x18
寄存器名称寄存器地址相对 GPIOD 基址的偏移
GPIOD_CRL0x4001 14000x00
GPIOD_CRH0x4001 14040x04
GPIOD_IDR0x4001 14080x08
GPIOD_ODR0x4001 140C0x0C
GPIOD_BSRR0x4001 14100x10
GPIOD_BRR0x4001 0C140x14
GPIOD_LCKR0x4001 0C180x18

因为stm32最小板仅有ABC三个引脚系列。0-7位为CRL,8-15位为CRH,相对基址的偏移即从基址开始多少十六进制后是此寄存器地址的开始,不同的寄存器有不同的地址,需要去访问该地址,就需要查表。

时钟寄存器在APB2线

 

 因此后续代码都是0x00000002对应的是0010

高位同理

1.4接线

1.4.1 将串口USB转TTL线与stm32核心板连接如图所示
 

1.4.2 并且要设.BOOT0 与 BOOT1 配置启动方式。 

BOOT1=xBOOT0=0从用户闪存启动,这是正常的工作模式。 
BOOT1=0BOOT0=1(ISP方式)从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1BOOT0=1从内置SRAM启动,这种模式可以用于调试.

如图所示

1.5 程序下载

1.6 总的实际连线图

 因为本文主要用到PA12,PB1,PC14引脚。

二、用C语言寄存器实现流水灯

2.1 工程文件

2.1.1 main.c

#define RCC_AP2ENR	*((unsigned volatile int*)0x40021018)
	//----------------GPIOA配置寄存器 ------------------------
#define GPIOA_CRH	*((unsigned volatile int*)0x40010804)
#define	GPIOA_ORD	*((unsigned volatile int*)0x4001080C)
//----------------GPIOB配置寄存器 ------------------------
#define GPIOB_CRL	*((unsigned volatile int*)0x40010C00)
#define	GPIOB_ORD	*((unsigned volatile int*)0x40010C0C)
//----------------GPIOC配置寄存器 ------------------------
#define GPIOC_CRH	*((unsigned volatile int*)0x40011004)
#define	GPIOC_ORD	*((unsigned volatile int*)0x4001100C)
//-------------------简单的延时函数-----------------------
void  Delay_ms( volatile  unsigned  int  t)
{
     unsigned  int  i;
     while(t--)
         for (i=0;i<800;i++);
}
//------------------------主函数--------------------------
int main()
{
	int j=100;
	RCC_AP2ENR|=1<<2;			//APB2-GPIOA外设时钟使能
	RCC_AP2ENR|=1<<3;			//APB2-GPIOB外设时钟使能	
	RCC_AP2ENR|=1<<4;			//APB2-GPIOC外设时钟使能
	//这两行代码可以合为 RCC_APB2ENR|=1<<3|1<<4;
	GPIOA_CRH&=0xFFF0FFFF;		//设置位 清零	
	GPIOA_CRH|=0x00020000;		//PA12推挽输出
	GPIOA_ORD|=1<<12;			//设置初始灯为亮
	
	GPIOB_CRL&=0xFFFFFF0F;		//设置位 清零	
	GPIOB_CRL|=0x00000020;		//PB1推挽输出
	GPIOB_ORD|=1<<1;			//设置初始灯为灭
	
	GPIOC_CRH&=0xF0FFFFFF;		//设置位 清零
	GPIOC_CRH|=0x02000000;   	//PC14推挽输出
	GPIOC_ORD|=1<<14;			//设置初始灯为灭	
	while(j)
	{	
		GPIOA_ORD=0x1<<12;		//PA12高电平	
		Delay_ms(3000000);
		GPIOA_ORD=0x0<<12;		//PA12低电平
		Delay_ms(3000000);
		
		GPIOB_ORD=0x1<<1;		//PB1高电平	
		Delay_ms(3000000);
		GPIOB_ORD=0x0<<1;		//PB1低电平
		Delay_ms(3000000);
		
		GPIOC_ORD=0x1<<14;		//PC14高电平	
		Delay_ms(3000000);
		GPIOC_ORD=0x0<<14;		//PC14低电平
		Delay_ms(3000000);
	}
}

 使用高电平点亮低电平熄灭

2.1.2加入设备

2.2 编译生成hex文件

2.3 用mcuisp烧入stm32如1.5步骤所示。

2.4 实验成果

 三、汇编语言实现流水灯

3.1 汇编代码

1.s

RCC_APB2ENR EQU 0x40021018

GPIOA_CRH EQU   0x40010804
GPIOA_ODR EQU   0x4001080C
                                    
GPIOB_CRL EQU   0x40010C00    ;寄存器映射
GPIOB_ODR EQU   0x40010C0C	
	
GPIOC_CRH EQU   0x40011004
GPIOC_ODR EQU   0x4001100C	
	
	
Stack_Size      EQU     0x00000400

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
					;NOINIT: = NO Init,不初始化。READWRITE : 可读,可写。ALIGN =3 : 2^3 对齐,即8字节对齐。
Stack_Mem       SPACE   Stack_Size
__initial_sp

                AREA    RESET, DATA, READONLY

__Vectors       DCD     __initial_sp               
                DCD     Reset_Handler              
                    
                    
                AREA    |.text|, CODE, READONLY
                    
                THUMB
                REQUIRE8
                PRESERVE8
                    
                ENTRY
Reset_Handler 
		
                
MainLoop		BL LED2_Init
                BL LED2_ON
                BL Delay             ;LED2灯闪烁
                BL LED2_OFF
                BL Delay
				
				BL LED1_Init				
				BL LED1_ON
                BL Delay             ;LED1灯闪烁
                BL LED1_OFF
                BL Delay
				
                BL LED3_Init				
				BL LED3_ON
                BL Delay            ;LED3灯闪烁
                BL LED3_OFF
                BL Delay
				
                B MainLoop
				
             
LED1_Init
                PUSH {R0,R1, LR}        ;R0,R1,LR中的值放入堆栈
                
                LDR R0,=RCC_APB2ENR      ;LDR是把地址装载到寄存器中(比如R0)。
                ORR R0,R0,#0x08         ;开启端口GPIOB的时钟,ORR 按位或操作,01000将R0的第二位置1,其他位不变		
                LDR R1,=RCC_APB2ENR
                STR R0,[R1]             ;STR是把值存储到寄存器所指的地址中,将r0里存储的值给rcc寄存器
				;上面一部分汇编代码是控制时钟的
                
                
                LDR R0,=GPIOB_CRL
                ORR R0,R0,#0X00000020   ;GPIOB_Pin_1配置为通用推挽输出;开启的是pb1,所以是2,为0010,是推挽输出模式,最大速度为2mhz
                LDR R1,=GPIOB_CRL
                STR R0,[R1]
                
                LDR R0,=GPIOB_ODR   
                BIC R0,R0,#0X00000002      ;BIC 先把立即数取反,再按位与
                LDR R1,=GPIOB_ODR          ;GPIO_Pin_1输出为0;由r1控制ord寄存器
                STR R0,[R1]                 ;将ord寄存器的值变为r0的值
             
                POP {R0,R1,PC}             ;将栈中之前存的R0,R1,LR的值返还给R0,R1,PC


             
LED1_OFF
                PUSH {R0,R1, LR}    
                
                LDR R0,=GPIOB_ODR
                BIC R0,R0,#0X00000002    ;因为是pb1所以对应二进制0010;GPIO_Pin_1输出为0,LED1熄灭
			    LDR R1,=GPIOB_ODR
                STR R0,[R1]
             
                POP {R0,R1,PC}
             
LED1_ON
                PUSH {R0,R1, LR}    
                
                 LDR R0,=GPIOB_ODR
                ORR R0,R0,#0X00000002    ;GPIO_Pin_1输出为1,LED1亮
                 LDR R1,=GPIOB_ODR
                STR R0,[R1]
                POP {R0,R1,PC}           


				

LED2_Init
                PUSH {R0,R1, LR};R0,R1,LR中的值放入堆栈
                
                LDR R0,=RCC_APB2ENR
                ORR R0,R0,#0x04		   ;打开GPIOA的时钟
                LDR R1,=RCC_APB2ENR
                STR R0,[R1]                
                
                LDR R0,=GPIOA_CRH
                ORR R0,R0,#0X00020000   ;GPIOA_Pin_12配置为通用推挽输出
                LDR R1,=GPIOA_CRH
                STR R0,[R1]
                
                LDR R0,=GPIOA_ODR
                BIC R0,R0,#0X00001000   
                LDR R1,=GPIOA_ODR            ;GPIOA_Pin_12输出为0
                STR R0,[R1]
             
                POP {R0,R1,PC}
				
LED2_OFF
                PUSH {R0,R1, LR}   
                
               LDR R0,=GPIOA_ODR
               BIC R0,R0,#0X00001000        ;GPIOA_Pin_12输出为0,LED2熄灭
			    LDR R1,=GPIOA_ODR
                STR R0,[R1]
             
                POP {R0,R1,PC}
             
LED2_ON
                PUSH {R0,R1, LR}    
                
                LDR R0,=GPIOA_ODR
                ORR R0,R0,#0X00001000     ;GPIOA_Pin_12输出为1,LED2亮
				 LDR R1,=GPIOA_ODR
                STR R0,[R1]
				
				 POP {R0,R1,PC}
				 

LED3_Init
                PUSH {R0,R1, LR}
                
                LDR R0,=RCC_APB2ENR
                ORR R0,R0,#0x10		    ;打开GPIOC的时钟
                LDR R1,=RCC_APB2ENR
                STR R0,[R1]                
                
                LDR R0,=GPIOC_CRH
                ORR R0,R0,#0X02000000   ;GPIOC_Pin_14配置为通用推挽输出
                LDR R1,=GPIOC_CRH
                STR R0,[R1]
                
                LDR R0,=GPIOC_ODR
                BIC R0,R0,#0X00004000   ;GPIOC_Pin_14输出为0
                LDR R1,=GPIOC_ODR
                STR R0,[R1]
             
                POP {R0,R1,PC}
             
LED3_OFF
                PUSH {R0,R1, LR}    
                
                LDR R0,=GPIOC_ODR
                BIC R0,R0,#0X00004000  ;GPIOC_Pin_14输出为0,LED3熄灭
			    LDR R1,=GPIOC_ODR
                STR R0,[R1]
             
                POP {R0,R1,PC}
             
LED3_ON
                PUSH {R0,R1, LR}    
                
                 LDR R0,=GPIOC_ODR
                ORR R0,R0,#0X00004000   ;GPIOC_Pin_14输出为1,LED3亮
                 LDR R1,=GPIOC_ODR
                STR R0,[R1]
				
                POP {R0,R1,PC}        
                
Delay
                PUSH {R0,R1, LR}
                
                MOVS R0,#0
                MOVS R1,#0
                MOVS R2,#0
                
DelayLoop0        
                ADDS R0,R0,#1

                CMP R0,#300
                BCC DelayLoop0
                
                MOVS R0,#0
                ADDS R1,R1,#1
                CMP R1,#300
                BCC DelayLoop0

                MOVS R0,#0
                MOVS R1,#0
                ADDS R2,R2,#1
                CMP R2,#15
                BCC DelayLoop0
                
                POP {R0,R1,PC}    

                END

3.2添加工程文件

因为自带starup启动文件因此不需要添加设备

 3.3 进行编译生成hex文件

3.4 烧录程序 

 3.5实验成果

 四、心得

  深刻的了解了在动手方面自己的不足,但是通过查阅资料与请教,慢慢的理解了stm32的工作原理,以及串行口的转换关系,真正意义上的掌握了软硬件结合的实验,整个实验操作下来其实也就代码比较的繁琐,而实验过程与原理是很清晰容易理解的。

参考文献

stm32花式点流水灯_星&&河的博客-CSDN博客

STM32寄存器的简介、地址查找,与直接操作寄存器_geekYatao-CSDN博客_stm32寄存器

STM32从地址到寄存器_geekYatao-CSDN博客_stm32寄存器地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于汇编和C语言STM32流水灯依次闪烁 的相关文章

  • selenium获取某网站工作岗位信息(含火狐浏览器的驱动下载安装步骤)

    目录 一 说明 二 Firefox驱动下载并配置环境变量 2 1 下载火狐浏览器驱动 2 2 配置驱动环境变量 三 selenium概念 3 1 概念引入 3 2 一些函数 3 2 1 切换不同窗口 3 2 2 切换到不同iframe 3
  • C#中的枚举 Enum和enum的区别

    枚举类型本质上是一个字典 xff0c 它将一组字符串映射到一组整数值 每个枚举常量都具有一个关联的整数值 xff0c 默认情况下 xff0c 第一个枚举常量的值为 0 xff0c 后续枚举常量的值会自动加 1 C 中有两种枚举类型 xff1
  • 【VScode远程连接虚拟机(ubuntu)】

    VScode远程连接虚拟机 前言一 安装VScode二 安装中文插件三 安装其他远程连接插件1 C C 43 43 Extension Pack2 Live Preview3 Live Server4 Remote Development
  • (错误都已改正)AS608指纹+STM32串口通信录入或删除指纹

    目录 一 硬件使用分类 1 整体图展示 2 STM32F103RCT6单片机 3 AS608指纹模块 4 USB转TTL 二 软件设计 1 接线设计 2 程序设计 一 硬件使用分类 1 整体图展示 采用STM32F103RCT6作为主控制器
  • 基于Maix IDE的编程环境 K21O人脸识别+串口输出

    如果你想进行人脸识别首先要进行对K210的模型以及固件的配置 xff0c 在你去Maix官网去下载模型以及固件 目录 一 如何申请机械码 1 前往这个网站 xff0c 也就是Maix的官网 xff08 需要提前申请账号 xff09 2 要进
  • K210模型训练(物体分类)

    目录 一 打开Maix IDE 的官网找到需要训练模型的平台Maix Hub 模型训练的分类 xff1a 二 如何使用Maix Hub模型训练平台 数据集的采集 三 训练模型后的文件分类 一 打开Maix IDE 的官网找到需要训练模型的平
  • Openstack Swift 安装部署总结

    环境 硬件 这里只使用了一台服务器 xff0c 既作为Controller Node xff0c 也作为Storage Node 主机名IPOS磁盘文件系统sf dev10 202 127 4Centos 7 4 dev sdb dev s
  • 针对于esp8266-01的刷AT固件

    目录 1 esp8266 01的结构与引脚分布 1 1对应各引脚的功能分布 2 如何与USB转TTL接线进行刷固件 3 使用 FLASH Download Tool刷固件 3 1打开该文件 3 2按照此选项进行选择 3 3接着进行选择 3
  • 阿里云物联网平台如何进行云产品流转

    一 什么是云产品流转 简单来说就是如何将数据从这个设备发送到另一个设备中 二 如何在同一产品上的俩个设备之间进行数据转移 1 创建一个产品 xff0c 并添加两个设备 可以看到RP DPJ 与RP WX 都是属于RP WXX 产品上的俩个设
  • 本地包含与远程包含

    注意 xff1a 仅用于本人学习的笔记记录 xff0c 禁止进行传播分享 xff0c 一旦造成严重后果与本人无关 xff01 xff01 xff01 一 什么是文件包含漏洞 文件包含 xff1a 就是去其他的php文件读取源码来运行 xff
  • Linux下的shell

    NC反向shell 1 查看shell类型 echo SHELL chsh s 需要修改shell的类型 cat etc shells 查看存在哪些shell 然后反弹对应的shell xff08 正向连接 xff09 被控制端 nc lv
  • 单片机之步进电机驱动篇(一)

    步进电机的简介 xff1a 步进电机是一种将电脉冲转化为角位移的执行机构 当步进电机驱动器接收到一个脉冲信号 xff0c 它就驱动步进电机按设定的方向转动一个步距角 通过控制脉冲来控制角位移量 xff0c 也可以实现对电机的加减速和正反转的
  • ROS使用Python编写的步骤

    第一步 xff1a 和C 43 43 编写一样 xff0c 配置好工作空间 第二步 xff1a 在功能包下面建立一个scripts文件夹 第三步 xff1a 在scripts文件里面建立一个 py文件 第四步 编写python文件 注意 x
  • 解决js脚本加载失败的问题

    当我们在运行某一个项目时 xff0c 它的某些JavaScript脚本可能加载不出来 xff0c 报错 像现在单页界面应用基本上都是通过js来构建 xff0c 一旦加载不出 xff0c 这个项目就不能运行了 xff0c 那怎么办 xff1f
  • 能在 Switch 中使用 String 吗?

    答 xff1a 从 Java 7 开始 xff0c 我们可以在 switch case 中使用字符串 xff0c 但这仅仅是一个语法糖 内部实现在 switch 中使用字符串的 hashCode 补充 xff1a 在JDK7以前 xff0c
  • C语言基础编程练习(精选例题+题解)

    目录 1 求最大公约数和最小公倍数 2 打印图形 3 质数因子 4 数字排序 5 十进制数转换为八进制数 xff08 进制转换 xff09 6 寻找完数 1 求最大公约数和最小公倍数 题目描述 xff1a 输入两个正整数m和n xff0c
  • 判断字符向量是否为回文

    回文是指正读反读均相同的字符序列 xff0c 如 34 abba 34 和 34 abdba 34 均是回文 xff0c 但 34 good 34 不是回文 试写一个算法判定给定的字符向量是否为回文 xff08 提示 xff1a 将一般字符
  • 【matlab】记一次微信聊天文字记录导出到Excel工作

    其实一直想把我和她的微信聊天记录导出到文本 xff0c 整理出来拿出来翻翻 xff0c 然后再查阅了大量网络资料后 xff0c 我成功的将我和她的聊天记录整理成excel的形式 xff0c 如下所示 xff1a 那么我们开始 一 工具准备
  • C语言实现选择排序算法

    选择排序 算法步骤 1 从0索引开始 xff0c 跟后面的元素一一比较 2 小的放前面 xff0c 大的放后面 3 第一次循环结束后 xff0c 最小的数据已经确定 4 第二次循环从一索引开始以此内推 整体代码块在最下方 xff0c 有需要
  • DVWA靶场搭建

    1 靶场是什么 xff0c 靶场的搭建 在学习web安全的过程中 xff0c 靶场是必不可少的 xff0c 毕竟在计算机界 xff0c 任何理论知识都不如实操 靶场就是人为提供的带有安全漏洞的服务 xff0c 每一个学习者都可以在本地快速搭

随机推荐

  • 用HTML+bootstrap制作个人简历

    用HTML bootstrap制作个人简历 nbsp index html lt DOCTYPE html gt lt html lang en gt lt head gt lt meta charset UTF 8 gt lt meta
  • 蓝桥杯单片机比赛学习:6、中断系统之定时器中断的基本原理

    上节我们讲了中断的外部中断 xff0c 基本的了解了一下中断 xff0c 这一节我们继续来学习中断系统的定时器中断基本原理 xff0c 本节很重要 无论是在比赛中还是在单片机 嵌入式等的学习上都有着很重要的地位 如对本作者有兴趣可以去我主页
  • 关于本地离线API文档大全-Zeal的下载以及使用

    目录 1 先进zeal官网进行下载对应的版本 2 进入点击edit gt preferents 在directory中设置存放文档的地址 3 进入下面的网址 xff0c 按ctrl 43 f查找所需的语言后复制name属性的值 4 下载文档
  • Vue使用Element Plus

    安装 Element Plus 安装组件 npm install element plus save 在main ts中导入UI 导入饿了么UI组件 import ElementPlus from 39 element plus 39 im
  • 带符号数的移位操作

    算数移位时应保持数的符号位不变 xff0c 数值的大小则要发生变化 左移一位相当于该数乘以2 xff0c 右移一位相当于该数除以2 移位运算有算数移位 逻辑移位和循环移位一共3类 xff0c 每种移位有左移和右移之分 1 算数移位 算数移位
  • Linux复制文件时出现权限不够的问题

    只需两步即可 1 ctrl 43 alt 43 t打开一个终端 2 输入命令sudo nautilus并运行 就可以打开一个具有管理员权限的文件管理器 xff0c 即可在不切换到管理员的条件下复制文件了
  • Unsupported class file major version 61

    简介 xff1a illegalargumentexception 不支持的类文件主版本61 xff0c jdk版本过高 1 项目场景 项目场景 xff1a 在maven框架下 xff0c 基于注解的SpringAOP项目 2 运行结果 3
  • 基于ubuntu 下 vim 入门进阶篇之环境和插件的配置2步完美搞定

    前言 xff1a 本文可以帮助你快速从vi新手到vi熟练使用 xff0c 按照文中的步骤可以使你在1小时之内搞定所有的配置和熟悉vi的基本使用 很早之前就接触vi了 xff0c 但是一直没时间弄插件 xff0c 也就使用了vi的基本功能 x
  • 数据库系统概论——非相关子查询和相关子查询详解

    学生表 课程表 学生选课表 学生表 xff1a Student Sno Sname Sex Sage Sdept 学号Sno 姓名Sname 性别Sex 年龄Sage 所在系Sdept 201215121 李勇 男 20 CS 201215
  • Anconda新建python环境

    文章目录 前言一 使用代码形式创建虚拟环境1 创建虚拟环境2 查看虚拟环境3 激活虚拟环境4 包的下载5 删除虚拟环境 二 图形界面创建虚拟环境总结 前言 本文主要解决使用Anconda创建python虚拟环境 提示 xff1a 以下是本篇
  • 副驾驶员copilot VsCode神级插件,新手慎用!!!

    新人慎用 新人慎用 新人慎用 一 xff0c 安装并申请 1 点击拓展 xff0c 搜索copilot 2 选这个 安装后右下角会弹出使用申请 xff0c 点击后会跳转到GitHub上申请 本插件是需要预约的 xff0c 大概一周左右时间就
  • 54-Linux概述

    Linux系统概述 计算机的体系结构 xff1a 计算机由计算机硬件和计算机软件两个部分组成 xff0c 其中计算机软件 Computer Software 可分为系统软件和应用软件 系统软件就是操作系统 xff0c 是其他软件的基础 Li
  • 实验十五 IS-IS协议基本配置

    实验十五 IS IS协议基本配置 IS IS 中间系统到中间系统 协议与OSPF 开放最短路径优先 协议有许多类似之处 xff0c 如都是链路状态的IGP路由协议 xff0c 采用的都SPF路由算法 xff0c 都划分了区域 为了支持大规模
  • 解决终端输出乱码问题

    乱码 代码 应该输出 王啊hello world 但是输出了乱码 原因 出现乱码问题的根本原因是编码与解码 使用了不同 而且不兼容的 标准 xff0c 在国内一般出现在中文的编解码过程中 解决方法 第一步 右击终端边界 xff0c 点击里面
  • Win10安装JDK11过程及配置

    写在前面 新手小白刚开始学习java xff0c 所以我的电脑未曾安装过jdk xff0c 如果是曾经装过的需要卸载旧版本 卸载注意事项 xff1a 1 找到原有文件 xff0c 删除它 2 选择此电脑 xff0c 右击系统属性 xff0c
  • Springboot启动后找不到接口前台报404

    Postman测试404后台没报错 首先考虑 xff1a 接口是不是被spring管理了 xff0c 没有被管理是找不到的 Controller 层是否添加注解 64 RestController 64 RequestMapping 34
  • VC++中for(i = 1; i < (1 << n); i ++)循环语句中 i < (1 << n)的含义

    lt lt 在VC 43 43 里执行的是位的算术左移 比如a 61 1 lt lt 1 就是1的二进制从右向左移一位 有符号位的左移高位相应补0或者1 移n位就是原十进制数的2 n次方 因为VC 43 43 里整型32 所以最多可以移31
  • 基于 Debain11 构建 asp.net core 6.x 的基础运行时镜像

    基于 Debain11 构建 asp net core 6 x 的基础运行时镜像 Linux 环境说明Debian 简介Debian 发行版本关于 Debian 11 Linux 常用基础工具Dockerfile 中 RUN 指令RUN 语
  • C++中cmp()用法

    首先 xff0c 我们来谈谈大名鼎鼎的void qsort void base int nelem int width int fcmp const void const void 它属于C语言标准库函数 xff0c 应该是运用最多的了 x
  • 基于汇编和C语言STM32流水灯依次闪烁

    目录 一 初始化 1 地址映射和寄存器映射 1 1 总线基地址 1 2 外设基地址 1 3 外设寄存器地址 1 4接线 1 4 1 将串口USB转TTL线与stm32核心板连接如图所示 1 4 2 并且要设 BOOT0 与 BOOT1 配置