单片机_day3_GPIO

目录

1. 灯如何才能亮

1.1原理图

1.2 二极管

1.3 换了一个灯和原理图

​编辑

1.4 三极管

1.4.1 NPN型三极管

1.4.2 PNP型三极管

2. 基本概念

3. 输入

3.1 浮空输入

3.2 上拉输入

3.3 下拉输入

3.4 模拟输入

4. 输出

4.1 推挽输出

4.2 开漏输出

如何让开漏输出高电平?

5. 相关寄存器

5.1 寄存器定义与作用

5.2 控制某一引脚输出电压来点灯所需要控制的寄存器

5.3  配置时钟使能寄存器

5.4 GPIO配置寄存器

5.4.1 端口模式寄存器

5.4.2 输出类型寄存器

5.4.3 输出速度寄存器

5.4.4 上下拉寄存器

5.4.5 输入数据寄存器

5.4.6 输出数据寄存器

5.5 让PC13引脚输出高电平

5.6 寻找寄存器地址--定位

6. 开始点灯

6.1 C语言点灯

位操作

6.2 新建项目

6.2.1 引脚配置

6.2.1 生成项目

6.2.4 代码分析

6.2.5 库函数分析

6.2.6 闪灯实验

7. 底板与拓展板

7.1 底板

7.2 显示屏与资源拓展板

7.2.1 显示屏

7.2.2 资源拓展板

8. 原理图

8.1 LD1这个灯连到了哪个引脚?

9. 按键

按键消抖

9.1.1 延时消抖

9.1.2 抬手检测

10. 光电开关(任务分析)

10.1 原理

10.2光电开关控制风扇


注意:单片机部分笔记的学习主要围绕STM32U575RIT系列芯片和华清远见学习开发板展开。

开发板软件安装包和原理图等资料连接:

通过网盘分享的文件:单片机
链接: https://pan.baidu.com/s/1gE3Mnl_MF0q667iqQ51IuA?pwd=mv5s 提取码: mv5s

1. 灯如何才能亮

1.1原理图

灯亮需要电流,产生电流需要电势差

单片机的电源3.3V —— + LED - —— 1.0V(单片机上比3.3V低的接口)

1.2 二极管

二极管就是由一个PN结加上相应的电极引线及管壳封装而成的

特点:正向导通,反向截止

记忆:将此符号看作一个箭头,顺着箭头的方向,电压降低才导通(压差最小为0.7v),否则相当于电阻无穷大。

有一种二极管在其导通时可以发光,这种二极管叫做发光二极管(Light Emitting Diode)

我们常说的LED,就是二极管。

1.3 换了一个灯和原理图

1.4 三极管

三极管有两种类型,PNP和NPN型。

1.4.1 NPN型三极管

基极高电平导通

1.4.2 PNP型三极管

基极低电平导通

D1灯亮,需要二极管左端为低电平

三极管导通,GND和D1左端导通,即D1左端拿到低电平,灯亮。

此三极管为NPN型三极管,当PC13为高电平时,三极管导通。

即PC13输出高电平,D1灯亮。

不难看出,此处三极管相当于一个简易的开关。

2. 基本概念

GPIO(General-purpose input/output)通用输入输出接口

--GP 通用

--I input 输入

--O output输出

GPIO,General Purpose Input Output,指的是芯片的通用输入输出引脚。

通过配置对应引脚的输出模式,我们可以进行LED灯的点亮,继电器的开闭控制;

在输入模式下,读取按键开关的状态,模拟输入状态下,我们可以读取温湿度传感器的数据。

除了以上使用情况,也可以作为I2C,SPI,串口的引脚等。

问:VDD、VSS、VCC分别表示什么意思?

VCC:C=circuit,表示电路的意思,即接入电路的电压。

VDD:D=device,表示器件的意思,即器件内部的工作电压。

VSS:S=series,表示公共连接的意思,通常指电路公共接地端电压。

VCC :接入电路的电压 外部参考高电平3.3,

VDD : 元器件内部的工作电压,内部参考高电压,stm32中为3.3v

VSS : 公共接地端电压,内部参考地,stm32中为0v

施密特触发器:整形

3. 输入

3.1 浮空输入

上下拉都关闭

好处:其电平完全由外部决定

不好:当引脚没有外接电路的时候,其电平信号是不确定的,不确定的信号会影响程序的正常判断

3.2 上拉输入

打开上拉,关闭下拉

好处:提供了一个默认电平,当外部电路不确定的时候,提供了一个默认的高电平。

当外部输入低电平时,输入的还是低电平

当外部输入高电平时,输入的是高电平

3.3 下拉输入

打开下拉,关闭上拉

好处:提供了一个默认电平,当外部电路不确定的时候,提供了一个默认的低电平。

当外部输入低电平时,输入的还是低电平

当外部输入高电平时,输入的是高电平

3.4 模拟输入

4. 输出

4.1 推挽输出

P-MOS、N-MOS都能用

输出高电平

在输出数据寄存器对应引脚位置写1--->数据选择器选择上路--->输出控制器给P-MOS和N-MOS都输出高电平--->P-MOS导通,N-MOS截止--->高电平由Vdd提供

输出低电平

在输出数据寄存器对应引脚位置写0--->数据选择器选择上路--->输出控制器给P-MOS和N-MOS都输出低电平--->N-MOS导通,P-MOS截止--->低电平由Vss提供

4.2 开漏输出

P-MOS关闭

输出低电平

在输出数据寄存器对应引脚位置写0--->数据选择器选择上路--->输出控制器给P-MOS和N-MOS都输出低电平--->N-MOS导通,P-MOS截止--->低电平由Vss提供

本身无法输出高电平

在输出数据寄存器对应引脚位置写1--->数据选择器选择上路--->输出控制器给P-MOS和N-MOS都输出高电平--->P-MOS关闭,N-MOS关闭--->电路处于高阻态

由上可得:开漏本身无法输出高电平

如何让开漏输出高电平?

1. 打开内部上拉电阻

2. 外接上拉电阻

好处:提供的电压由用户决定,想提供高电压,把外界上拉电阻的电压源提高即可。

5. 相关寄存器

5.1 寄存器定义与作用

为什么要学习寄存器,寄存器的作用是什么?

答:

  1. 寄存器是单片机内部的一些存储单元
  2. 单片机的设置和寄存器直接关联,比如输出模式,比如输入输出的电压,比如上下拉电阻是否打开,所以,想要对单片机进行设置就是对寄存器进行改写的过程。

5.2 控制某一引脚输出电压来点灯所需要控制的寄存器

  1. 时钟开关,总开关
  2. 端口模式寄存器--输出模式
  3. 输出类型寄存器--推挽
  4. 输出速度寄存器--非常慢
  5. 上下拉寄存器 --既不上拉也不下拉
  6. 输出数据寄存器  --1

5.3  配置时钟使能寄存器

思路:

我们的目的是使用PC13,所以要先打开C引脚组时钟。

通过寻找内存架构找到了RCC相关的寄存器组,RCC寄存器组里的寄存器太多了。

找到控制引脚组的RCC寄存器需要找到GPIO属于哪个总线上的(AHB1\APB1\APB2\PHB2等),通过查内存分配架构图可知,GPIO在AHB2总线上,所以,我们定位到了RCC_AHB2ENR1

RCC AHB2 peripheral clock enable register 1 (RCC_AHB2ENR1)

打开C组,就可以使用PC13

RCC_AHB2ENR1第2位写1

5.4 GPIO配置寄存器

5.4.1 端口模式寄存器

GPIO port mode register (GPIOx_MODER) (x = A to J)

PC13为输出模式

GPIOC_MODER第27、26位写0,1

5.4.2 输出类型寄存器

GPIO port output type register (GPIOx_OTYPER) (x = A to J)

PC13推挽模式

GPIOC_OTYPER 第13位写0

5.4.3 输出速度寄存器

GPIO port output speed register (GPIOx_OSPEEDR) (x = A to J)

PC13低速输出

GPIOC_OSPEEDR 第27、26位写 0 0

5.4.4 上下拉寄存器

GPIO port pull-up/pull-down register (GPIOx_PUPDR) (x = A to J)

PC13都不拉

GPIOC_PUPDR 第27、26位写 0 0

5.4.5 输入数据寄存器

GPIO port input data register (GPIOx_IDR) (x = A to J)

5.4.6 输出数据寄存器

GPIO port output data register (GPIOx_ODR) (x = A to J)

PC13输出高电平

GPIOC_ODR第13位写1

5.5 让PC13引脚输出高电平

  1. 打开时钟:RCC_AHB2ENR1 给第2位写1
  2. 配置端口模式寄存器 配置为输出模式 GPIOC_MODER 第27、26位写 0 1
  3. 配置输出类型寄存器 配置为推挽输出 GPIOC_OTYPER 第13位写0
  4. 配置输出速度数据寄存器 配置为很低 GPIOC_OSPEEDR 第 27、26位写 0 0
  5. 配置上下拉寄存器 配置为既不用上拉也不下拉 GPIOC_PUPDR 第27、26位写0 0
  6. 配置输出数据寄存器 给PC13引脚写1 GPIOC_ODR 第13位写1

5.6 寻找寄存器地址--定位

0x56020C00是RCC寄存器组的基地址

偏移地址,相对于基地址--RCC寄存器组的起始地址

RCC_AHB2ENR1地址为:0x56020C00+0x08C=0X56020C8C

GPIOC寄存器组的基地址为0x5202 0800

GPIOC_MODER : 0x5202 0800+0X00=0x5202 0800

GPIOC_OTYPER : 0x5202 0800+0X04=0x5202 0804

GPIOC_OSPEEDR : 0x5202 0800+0X08=0x5202 0808

GPIOC_PUPDR :0x5202 0800+0X0C=0x5202 080C

GPIOc_ODR :0x5202 0800+0X14=0x5202 0814

6. 开始点灯

6.1 C语言点灯

void SystemInit(void)
{
	*(unsigned int*) 0xE000ED88|=((3UL << 20U)|(3UL << 22U));

}
int main(void)
{

}

记得使用微型C库,不勾的话可能会影响效果

如果报了两个未知错误,可尝试调整优化

烧录前一定将烧写器调成STLINK

位操作

精准置1

x|1=1;

x|0=x;

故将不希望改变的位和0相或,将希望置1的位和1相或即可。

使第26位置1,可通过让整个寄存器和1<<26相或再赋值得到,寄存器 |= (1<<26)

精准置1

x|1=1;

x|0=x;

故将不希望改变的位和0相或,将希望置1的位和1相或即可。

使第26位置1,可通过让整个寄存器和1<<26相或再赋值得到,寄存器 |= (1<<

void SystemInit(void)
{
	*(unsigned int*) 0xE000ED88|=((3UL << 20U)|(3UL << 22U));

}
int main(void)
{
//RCC_AHB2ENR1地址为:0x56020C00+0x08C=0X56020C8C
//GPIOC_MODER    : 0x5202 0800+0X00=0x5202 0800
//GPIOC_OTYPER   : 0x5202 0800+0X04=0x5202 0804
//GPIOC_OSPEEDR :  0x5202 0800+0X08=0x5202 0808
//GPIOC_PUPDR    :0x5202 0800+0X0C=0x5202 080C
//GPIOc_ODR       :0x5202 0800+0X14=0x5202 0814
		*(unsigned int *)0X56020C8C |= (1<<2);
		*(unsigned int *)0x52020800 |= (1<<26);
		*(unsigned int *)0x52020800 &= ~(1<<27);
		*(unsigned int *)0x52020804 &= ~(1<<13);
		*(unsigned int *)0x52020808 &= ~(3<<26);
		*(unsigned int *)0x5202080C &= ~(3<<26);
		*(unsigned int *)0x52020814 |= (1<<13);	
		while(1);
}

void SystemInit(void)
{
	*(unsigned int*) 0xE000ED88|=((3UL << 20U)|(3UL << 22U));

}
void delay(int T);

typedef struct{
	unsigned int	MODER;
	unsigned int	OTYPER;
	unsigned int  SPEED;
	unsigned int	PUPDR;
	unsigned int	IDR;	
	unsigned int	ODR;
}GPIO;

#define GPIOC 			(*(GPIO *)0x52020800)
#define RCC_AHB2ENR1		*(unsigned int *)0x56020C8C

int main(void)
{
	RCC_AHB2ENR1 |= 1<<2;//配置RCC_AHB2ENR1的第2位置1,打开时钟
	GPIOC.MODER |= 1<<26;//GPIOC_MODER 的第26位置1,配置输出
	GPIOC.MODER &= ~(1<<27);//GPIOC_MODER 的第27位置0,配置输出
	GPIOC.OTYPER &= ~(1<<13);//GPIOC_OTYPER 的第13位置0,配置推挽
	GPIOC.SPEED &= ~(3<<26);//GPIOC_OSPPEDR 第27、26位置0
	GPIOC.PUPDR &= ~(3<<26);//GPIOC_PUPDR 第27、26位置0
	GPIOC.ODR |= 1<<13;//GPIOC_ODR 第13位置1
		while(1)
		{
			  GPIOC.ODR |= 1<<13;//GPIOC_ODR 第13位置1
				delay(1000);
				GPIOC.ODR &= ~(1<<13);//GPIOC_ODR 第13位置0	
				delay(1000);			
		}
}

void delay(int T)
{
    int a,b;
    for(a=0;a<T;a++)
			for(b=0;b<100;b++);
}

6.2 库函数点灯

6.2 新建项目

6.2.1 引脚配置

打开烧录口

6.2.1 生成项目

6.2.4 代码分析

    双击main.c文件,找到,我们可以查看MX_GPIO_Init();的内容以了解CubeMX帮我们生成了的初始化内容,选中MX_GPIO_Init();后按下F12或鼠标右键,选择Go To Definition of...

6.2.5 库函数分析

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
功能: 设置或清除指定的端口位
参数:GPIO_TypeDef *GPIOx  端口号
           uint16_t GPIO_Pin         引脚号
           GPIO_PinState PinState  电平状态
                        GPIO_PIN_SET         1 
                        GPIO_PIN_RESET    0
返回值:无

void HAL_GPIO_TogglePin (GPIO_TypeDef * GPIOx, uint16_t  GPIO_Pin) 
功能: 切换指定的引脚电平状态
参数:GPIO_TypeDef * GPIOx  端口号
            uint16_t  GPIO_Pin     引脚号
返回值:无

GPIO_PinState HAL_GPIO_ReadPin (GPIO_TypeDef * GPIOx,  uint16_t GPIO_Pin) 
功能: 读取指定的引脚电平状态
参数:GPIO_TypeDef * GPIOx  端口号
            uint16_t  GPIO_Pin     引脚号
返回值:GPIO_PinState 电平状态
              GPIO_PIN_RESET   0
              GPIO_PIN_SET        1

HAL_Delay()单位毫秒

点灯

6.2.6 闪灯实验

7. 底板与拓展板

7.1 底板

STM32 开发板底板,支持 5V 电源适配器与 TypeC 供电。

提供 RTC 时钟电源,提供三轴加速度与角速度传感器,用于姿态感知。

板载 ESP-12F 无线模组,用于物联网云平台项目开发。

提供 1 路五向按键,采用中断与 A/D 模式采样。

提供 1 路有源蜂鸣器,1 路 2*17P 扩展接口,用于资源扩展板的接入。

核心板接口通过 2.54mm 间距的插针引出,方便用户外接其它设备

7.2 显示屏与资源拓展板

7.2.1 显示屏

电容触摸显示屏在很多智能设备上得到应用,提升了设备的交互感。

在开发板套件中使用方型显示屏用来模拟圆形的一个手表项目。显示屏尺寸为 2.8寸,分辨率 320*240(RGB)。

驱动 IC采用 ILI9341,自带 172,800 字节的 GRAM 存储。电容触摸屏采用 I2C 接口,驱动 IC 采用 FT6336G。

7.2.2 资源拓展板

资源扩展板提供基于 I2C 总线的温湿度传感器、环境光感知、心率/脉搏测量。基于模数转换接口的电压/电流采集。

基于 EXTI 事件/中断控制类型的人体红外、光电开关、火焰感知传感器。

基于 SPI 总线的数码管驱动电路。

基于 PWM 控制的风扇、蜂鸣器、震动马达。

基于 GPIO 的按键、LED 指示灯。

基于异步串行通信的 485 总线电平转换。基于控制器局域网总线的 CAN 电平转换等外设。

资源扩展板主要用于微控制器入门外设的使用,硬件图纸原理以及项目案例的应用开发学习。

8. 原理图

8.1 LD1这个灯连到了哪个引脚?

1. 先找到想要点的灯是谁,确定丝印为LD1

2. 打开拓展原理图,根据丝印LD1找到等的所在处,LED1线控制着LD1灯的亮灭

LED1为高电平灯亮,反之,灯灭

LED1肯定连到了芯片引脚上,顺线继续找LED1

3. LED1想要连到芯片引脚,必走如图所在处,其丝印为J1(空间有限,板子上并未标注)

4. 打开拓展板原理图J1所在处,能够找到老熟人,LED1,其位于J1的4号口

5. 拓展板通过J1连到了底板的J6口

6. 打开底板原理图找J6的4号口,就找到了LED1的连接处

7. 底板通过地板上的槽J1和J2连到了核心板,所以,LED1想连到芯片上肯定会走这个槽,所以去底板上找这个槽有没有叫LED1的,槽是J1和J2

8. 在J2的15号口又看到了老熟人LED1,为了方便,这里直接标注上了最后连到核心板的PC14上了

在J2的15号口又看到了老熟人LED1,为了方便,这里直接标注上了最后连到核心板的PC14上了

9. 结论:PC4最终连到了LED1,所以,控制PC4的电平高低就可以实现对灯的控制了,至此,此次原理图线路追踪结束,并得出结论

PC4高电平LD1灯亮,反之灯灭

作业:驱动风扇、蜂鸣器、马达隔一段时间切换一次状态

将演示视频发群里

依次方法可知:风扇连到了PC6引脚,高电平驱动

马达连到了PC7引脚,高电平驱动

底板蜂鸣器连到了PA15引脚,高电平驱动

9. 按键

当按键未按下,PC9为高电平

当按键被按下,PC9为低电平

所以,检测PC9是否为低电平就可以直到PC9是否按下了

按键消抖

抖动原因:

任何的机械按键都会有抖动,而且人手按下抬起并不是一瞬间的,人抬手是需要反应时间的,所以会导致按下的低电平时间过长,导致多次误进if判断语句,所以会多次切换状态,导致误判。

9.1.1 延时消抖

此处建议观看录课中的延时消抖讲解

9.1.2 抬手检测

检测到抬手动作后再进行灯的电平翻转

10. 光电开关(任务分析)

10.1 原理

遮挡-->PE15输出高电平--->PB2输入高电平

无遮挡-->PE15输出低电平--->PB2输入低电平

10.2光电开关控制风扇

num测试

]使用调试查看变量内容

最终实现代码

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

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

相关文章

基于视觉智能的时间序列基础模型

GitHub链接&#xff1a;ViTime: A Visual Intelligence-Based Foundation Model for Time Series Forecasting 论文链接&#xff1a;https://github.com/IkeYang/ViTime 前言 作者是来自西安理工大学&#xff0c;西北工业大学&#xff0c;以色列理工大学以及香港城市大学的研…

java项目-jenkins任务的创建和执行

参考内容: jenkins的安装部署以及全局配置 1.编译任务的general 2.源码管理 3.构建里编译打包然后copy复制jar包到运行服务器的路径 clean install -DskipTests -Pdev 中的-Pdev这个参数用于激活 Maven 项目中的特定构建配置&#xff08;Profile&#xff09; 在 pom.xml 文件…

Qt按钮类-->day09

按钮基类 QAbstractButton 标题与图标 // 参数text的内容显示到按钮上 void QAbstractButton::setText(const QString &text); // 得到按钮上显示的文本内容, 函数的返回就是 QString QAbstractButton::text() const;// 得到按钮设置的图标 QIcon icon() const; // 给按钮…

论文6—《基于YOLOv5s的深度学习在自然场景苹果花朵检测中的应用》文献阅读分析报告

论文报告&#xff1a;基于YOLOv5s的深度学习在自然场景苹果花朵检测中的应用 基于YOLOv5s的深度学习在自然场景苹果花朵检测中的应用 摘要国内外研究现状1. 疏花技术研究2. 目标检测算法研究 研究目的研究问题使用的研究方法试验研究结果文献结论创新点和对现有研究的贡献1. Y…

「人眼视觉不再是视频消费的唯一形式」丨智能编解码和 AI 视频生成专场回顾@RTE2024

你是否想过&#xff0c;未来你看到的电影预告片、广告&#xff0c;甚至新闻报道&#xff0c;都可能完全由 AI 生成&#xff1f; 在人工智能迅猛发展的今天&#xff0c;视频技术正经历着一场前所未有的变革。从智能编解码到虚拟数字人&#xff0c;再到 AI 驱动的视频生成&#…

计算机毕业设计Python美食推荐系统 美团爬虫 美食可视化 机器学习 深度学习 混合神经网络推荐算法 Hadoop Spark 人工智能 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

GPU分布式通信技术-PCle、NVLink、NVSwitch深度解析

GPU分布式通信技术-PCle、NVLink、NVSwitch 大模型时代已到来&#xff0c;成为AI核心驱动力。然而&#xff0c;训练大模型却面临巨大挑战&#xff1a;庞大的GPU资源需求和漫长的学习过程。 要实现跨多个 GPU 的模型训练&#xff0c;需要使用分布式通信和 NVLink。此外&#xf…

MySQL:联合查询(2)

首先写一个三个表的联合查询 查询所有同学的每门课成绩&#xff0c;及同学的个人信息 1.我们首先要确定使用哪些表 学生表&#xff0c;课程表&#xff0c;成绩表 2.取笛卡尔积 select * from score,student,course; 3. 确定表与表之间的联合条件 select * from score,stud…

【leetcode】704. 二分查找

注意一般mid left (right-left)/2; 不要用mid (right - left)/2 中间值的计算需要考虑到整型溢出的问题。 如果使用 mid (right - left) / 2 的方式计算中间值&#xff0c;那么在 right 和 left 的值接近极限值的情况下&#xff0c;可能会导致计算出的中间值发生整型溢出&…

RHCE的练习(12)

写一个脚本&#xff0c;完成以下要求&#xff1a; 给定一个用户&#xff1a; 如果其UID为0&#xff0c;就显示此为管理员&#xff1b;否则&#xff0c;就显示其为普通用户&#xff1b; #!/bin/bash ​ # 使用read命令获取用户名 read -p "请输入用户名: " username ​…

WPF-控件的属性值的类型转化

控件的属性值需要转成int、double进行运算的&#xff0c;可以使用一下方法 页面代码 <StackPanel Margin"4,0,0,0" Style"{StaticResource Form-StackPanel}"> <Label Content"替换后材料增加金额&#xff…

【从零开始的LeetCode-算法】3270. 求出数字答案

给你三个 正 整数 num1 &#xff0c;num2 和 num3 。 数字 num1 &#xff0c;num2 和 num3 的数字答案 key 是一个四位数&#xff0c;定义如下&#xff1a; 一开始&#xff0c;如果有数字 少于 四位数&#xff0c;给它补 前导 0 。答案 key 的第 i 个数位&#xff08;1 < …

iMetaOmics | 刘永鑫/陈同-用于食物微生物组成和时间序列研究的微生物组数据库FoodMicroDB...

点击蓝字 关注我们 FoodMicroDB&#xff1a;用于食物微生物组成和时间序列研究的微生物组数据库 iMeta主页&#xff1a;http://www.imeta.science 研究论文 ● 原文链接DOI: https://doi.org/10.1002/imo2.40 ● 2024年11月1日&#xff0c;中国农业科学院深圳农业基因组研究所刘…

视觉slam十四讲 ch8 光流法和直接法

之前的都是单层光流 转载至Blibli 视觉SLAM十四讲_7视觉里程计1_计算相机运动_哔哩哔哩_bilibili

QSS 设置bug

问题描述&#xff1a; 在QWidget上add 一个QLabel&#xff0c;但是死活不生效 原因&#xff1a; c 主程序如下&#xff1a; QWidget* LOGO new QWidget(logo_wnd);LOGO->setFixedSize(logo_width, 41);LOGO->setObjectName("TittltLogo");QVBoxLayout* tit…

Linux运维篇-iscsi存储搭建

目录 概念实验介绍环境准备存储端软件安装使用targetcli来管理iSCSI共享存储 客户端软件安装连接存储 概念 iSCSI是一种在Internet协议上&#xff0c;特别是以太网上进行数据块传输的标准&#xff0c;它是一种基于IP Storage理论的存储技术&#xff0c;该技术是将存储行业广泛…

WSL--无需安装虚拟机和docker可以直接在Windows操作系统上使用Linux操作系统

安装WSL命令 管理员打开PowerShell或Windows命令提示符&#xff0c;输入wsl --install&#xff0c;然后回车 注意&#xff1a;此命令将启用运行 WSL 和安装 Linux 的 Ubuntu 发行版所需的功能。 注意&#xff1a;默认安装最新的Ubuntu发行版。 注意&#xff1a;默认安装路径是…

【学习心得】算力云平台上的大模型部署并实现远程调用

以AutoDL算力云平台为例&#xff0c;部署国产开源ChatGLM3b模型。 一、准备工作 &#xff08;1&#xff09;准备一台算力服务器 首先&#xff0c;进入AutoDL官网的算力时长选择算力服务器资源。 创建好后会自动跳转控制台的“容器实例”界面&#xff0c;稍等片刻后选择“快捷…

Vue 中的透传,插槽,依赖注入

1. 透传attributes 在组件上使用透传attribute&#xff1a; 当你在父组件中使用子组件时&#xff0c;你可以添加一些attribute到子组件上&#xff0c;即使这些attribute没有在子组件的props中声明。 父组件&#xff1a; <!-- 父组件&#xff0c;例如 ParentComponent.vue…

97.【C语言】数据结构之栈

目录 栈 1.基本概念 2.提炼要点 3.概念选择题 4.栈的实现 栈初始化函数 入栈函数 出栈函数和栈顶函数 栈顶函数 栈销毁函数 栈 基本概念参见王爽老师的《汇编语言 第四版》第56和57页 节选一部分 1.基本概念 注意:这里提到的数据结构中的栈有别于操作系统的栈,后者是…