44_外部SRAM实验

news2024/11/25 11:00:59

目录

IS62WV51216简介

IS62WV51216框图

IS62WV51216读时序

IS62WV51216写时序

FSMC简介

FSMC寄存器介绍

硬件连接图

实验源码


IS62WV51216简介

IS62WV51216ISSi (Integrated Silicon Solution,Inc)公司生产的一颗16位宽512K (512*16,即1M字节)容量的CMOS静态内存(SRAM)芯片。

高速。具有45ns/55ns访问速度。

低功耗。操作时: 36mW;待机时: 12uW。

兼容TTL电平。

全静态操作。不需要刷新和时钟电路。

三态输出

字节控制功能。支持高/低字节控制。

IS62WV51216框图

 图中A0~18为地址线,总共19根地址线(即219=512K, 1K-1024)و1/00~15为数据线,总共16根数据线。CS2和CS1都是片选信号,不过CS2是高电平有效CS1是低电平有效OE是输出使能信号(读信号); WE为写使能信号; UB和LB分别是高字节控制和低字节控制信号;

IS62WV51216读时序

读周期时间(tRC)

地址建立时间(tAA)

OE建立时间(tDOE)

开发板使用55ns的IS62WV51216, tRC=55nstAA=55ns (Max) , tDOE=25ns (Max)

IS62WV51216写时序

写周期时间(tWC)

地址建立时间(tSA)

WE脉宽(tPWE)

开发板使用55ns的IS62WV51216, tWC=55nstSA=Ons, tPWE=45ns (min)

FSMC简介

FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡连接, STM32的FSMC接口支持包括SRAM, NAND FLASH, NOR FLASH和PSRAM等存储器。FSMC的框图如下图所示:

FSMC驱动外部SRAM时,外部SRAM的控制一般有:地址线(如A0~A25) 、数据线(如D0-D15)、写信号(WE,即WR)、读信号(OE,即RD)、片选信号(CS),如果SRAM支持字节控制,那么还有UB/LB信号。

而IS62WV51216的信号,包括: 1/00-1/015、A0-A18、OE、WE、CS、UB、LB等,我们将这些信号依次连接STM32 FSMC接口的DO-D15、A0-A18、 OE、WE、CS、UB、 LB等信号即可。

STM32的FSMC支持8/16位数据宽度,我们这里用到的SRAM是16位宽度的,所以在设置的时候,选择16位宽就OK了。FSMC的外部设备地址映像, STM32的FSMC将外部存储器划分为固定大小为256M字节的四个存储块

 STM32的FSMC存储块1 (Bank1)用于驱动NOR FLASH/SRAM/PSRAM,被分为4个区,每个区管理64M字节空间,每个区都有独立的寄存器对所连接的存储器进行配置。Bank1的256M字节空间由28根地址线(HADDR[27:0])寻址。这里HADDR,是内部AHB地址总线,其中,HADDR[25:0]来自外部存储器地址FSMC_A[25:0],而HADDR[26:27]对4个区进行寻址。如下表所示:

当Bank1接的是16位宽度存储器的时候: HADDR[25:1]>FSMC_A[24:0]当Bank1接的是8位宽度存储器的时候: HADDR[25:0]→FSMC_A[25:0]

不论外部接8位/16位宽设备, FSMC_A[0]永远接在外部设备地址A[0]

STM32的FSMC存储块1支持的异步突发访问模式包括:模式1、模式A~D等多种时序模型,驱动SRAM时一般使用模式1或者模式A,这里我们使用模式A来驱动SRAM,其他模式说明详见: STM32中文参考手册-FSMC章节。

 NBL0对应UB NBL1对应LB

FSMC寄存器介绍

对于NORFLASH/PSRAM控制器(存储块1),通过FSMC_BCRx、FSMC_BTRx和FSMC_BWTRx寄存器设置(其中x=1-4,对应4个区)。通过这3个寄存器,可以设置FSMC访问外部存储器的时序参数,拓宽了可选用的外部存储器的速度范围。

SRAM/NOR闪存片选控制寄存器(FSMC_BCRx)

EXTMOD:扩展模式使能位,控制是否允许读写不同的时序,设置为0

WREN:写使能位。我们需要向SRAM写数据,故该位必须设置为1

MWID[1:0]:存储器数据总线宽度。00,表示8位数据模式; 01表示16位数据模式; 10和11保留。我们的SRAM是16位数据线,所以设置WMID[1:0]=01

MTYP[1:0]:存储器类型。00表示SRAM、ROM: 01表示PSRAM: 10表示NORFLASH:11保留。我们驱动的芯片为SRAM,所以需要设置MTYP[1:0]=00

MBKEN:存储块使能位。需设置为1

SRAM/NOR闪存片选时序寄存器(FSMC_BTRx)

ACCMOD[1:0]:访问模式。00:模式A; 01:模式B; 10:模式C; 11:模式D。

DATAST[7:0]:数据保持时间,等于: DATAST(+1)个HCLK时钟周期, DATAST最大为255。对IS62WV51216来说,其实就是OEWE低电平持续时间,最大为55ns。对STM32F1, 一个HCLK=13.8ns (1/72M),设置为3;对STM32F4,个HCLK=6ns(1/168M),设置为8。

ADDSET[3:0]:地址建立时间。表示: ADDSET (+1)个HCLK周期, ADDSET最大为15。对IS62WV51216来说,访问周期最快55ns,而我们前面的设置,已经可以保证访问周期不小于55ns,因此这个地址建立时间,我们可以直接设置为0即可。

因为设置了EXTMOD位,所以读写时序共用这个时序寄存器!

在ST官方库提供的的寄存器定义里面,并没有定义FSMC_BCRx、 FSMC_BTRx,FSMĞ_BWTRx等这个单独的寄存器,而是将他们进行了一些组合。规律如下:

FSMC_BCRx和FSMC_BTRx,组合成BTCR[8]寄存器组,他们的对应关系如下:

BTCR[O]对应FSMC_BCR1, BTCR[1]对应FSMC_BTR1

BTCR[2]对应FSMC_BCR2, BTCR[3]对应FSMC_BTR2

BTCR[4]对应FSMC_BCR3, BTCR[5]对应FSMC_BTR3

BTCR[6]对应FSMC_BCR4, BTCR[7]对应FSMC_BTR4

FSMC_BWTRx则组合成BWTR[7],他们的对应关系如下:

BWTR[O]对应FSMC_BWTR1, BWTR[2]对应FSMC_BWTR2,

BWTR[4]对应FSMC_BWTR3. BWTR[6]对应FSMC_BWTR4

.BWTR[1], BWTR[3]和BWTR[5]保留,没有用到,

硬件连接图

A[0:18]接FMSC_A[0:18]

D[0:15]接FSMC_D[0:15]

UB接FSMC_NBL1

LB接FSMC_NBL0

OE接FSMC_OE

WE接FSMC_WE

CS接FSMC NE3

实验源码

/**
  ******************************************************************************
  * @file           : user_rcc_config.c
  * @brief          : V1.00
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */

/* Include 包含---------------------------------------------------------------*/
#include "user_rcc_config.h"
/* Typedef 类型----------------------------------------------------------------*/
/* Define  定义----------------------------------------------------------------*/
/* Macro   宏------------------------------------------------------------------*/
/* Variables 变量--------------------------------------------------------------*/
/* Constants 常量--------------------------------------------------------------*/
/* Function  函数--------------------------------------------------------------*/

/*!
	\brief		RCC配置
	\param[in]	none
	\param[out]	none
	\retval 	none
*/
void Rcc_config(void)
{	
	/*使能GPIOA时钟*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	/*使能UART1时钟*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
	/*使能GPIO*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOG,ENABLE);
  	/*使能FSMC时钟*/
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);

}

/************************************************************** END OF FILE ****/
 
/**
  ******************************************************************************
  * @file           : user_gpio.c
  * @brief          : V1.00
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */

/* Include 包含---------------------------------------------------------------*/
#include "user_gpio.h"
/* Typedef 类型----------------------------------------------------------------*/
/* Define  定义----------------------------------------------------------------*/
/* Macro   宏------------------------------------------------------------------*/
/* Variables 变量--------------------------------------------------------------*/
/* Constants 常量--------------------------------------------------------------*/
/* Function  函数--------------------------------------------------------------*/

/*!
	\brief		GPIO初始化函数
	\param[in]	none
	\param[out]	none
	\retval 	none
*/
void Gpio_Init(void)
{	
	/*GPIO结构体*/
	GPIO_InitTypeDef GPIO_InitTypeDefstruct;
	
	/*UART1发送引脚配置*/
	GPIO_InitTypeDefstruct.GPIO_Mode  = GPIO_Mode_AF_PP;//推挽复用输出
	GPIO_InitTypeDefstruct.GPIO_Pin   = GPIO_Pin_9;
	GPIO_InitTypeDefstruct.GPIO_Speed =	GPIO_Speed_10MHz;
	/*写入结构体到GPIOA*/
	GPIO_Init(GPIOA,&GPIO_InitTypeDefstruct);
	
	/*UART1接收引脚配置*/
	GPIO_InitTypeDefstruct.GPIO_Mode  = GPIO_Mode_IN_FLOATING;//浮空输入
	GPIO_InitTypeDefstruct.GPIO_Pin   = GPIO_Pin_10;
	GPIO_InitTypeDefstruct.GPIO_Speed =	GPIO_Speed_10MHz;
	/*写入结构体到GPIOA*/	
	GPIO_Init(GPIOA,&GPIO_InitTypeDefstruct);
	
	/*配置FSMC引脚*/
	GPIO_InitTypeDefstruct.GPIO_Pin = 0xFF33; 			 	 
 	GPIO_InitTypeDefstruct.GPIO_Mode = GPIO_Mode_AF_PP; 		 
 	GPIO_InitTypeDefstruct.GPIO_Speed = GPIO_Speed_50MHz;
 	GPIO_Init(GPIOD, &GPIO_InitTypeDefstruct);	
	
	GPIO_InitTypeDefstruct.GPIO_Pin = 0xFF83; 			 	
 	GPIO_Init(GPIOE, &GPIO_InitTypeDefstruct);
	
	GPIO_InitTypeDefstruct.GPIO_Pin = 0xF03F; 			 	 
 	GPIO_Init(GPIOF, &GPIO_InitTypeDefstruct);
	
	GPIO_InitTypeDefstruct.GPIO_Pin = 0x043F; 			 	
 	GPIO_Init(GPIOG, &GPIO_InitTypeDefstruct);
	
			
}

/************************************************************** END OF FILE ****/
 
/**
  ******************************************************************************
  * @file           : user_uart.c
  * @brief          : V1.00
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */

/* Include 包含---------------------------------------------------------------*/
#include "user_uart.h"
/* Typedef 类型----------------------------------------------------------------*/
/* Define  定义----------------------------------------------------------------*/
/* Macro   宏------------------------------------------------------------------*/
/* Variables 变量--------------------------------------------------------------*/

extern uint16_t USART_RX_STA;
extern uint8_t USART_RX_BUF[200];


/* Constants 常量--------------------------------------------------------------*/
/* Function  函数--------------------------------------------------------------*/
#if 1
#pragma import(__use_no_semihosting)  
/*实现Printf代码*/
struct __FILE 
{ 
	int handle; 

}; 
FILE __stdout;       

void _sys_exit(int x) 
{ 
	x = x; 
} 
//重定义fputc函数 
int fputc(int ch, FILE *f)
{      
	while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
    USART1->DR = (u8) ch;      
	return ch;
}
#endif 




/*!
	\brief		UART1初始化
	\param[in]	none
	\param[out]	none
	\retval 	none
*/

void Uart1_Init(u32 bound)
{
	/*UART结构体*/
	USART_InitTypeDef USART_InitTypeDefstruct;
	
	/*UART结构体配置*/
	USART_InitTypeDefstruct.USART_BaudRate = bound; //波特率
	USART_InitTypeDefstruct.USART_HardwareFlowControl =USART_HardwareFlowControl_None; //不使用硬件流
	USART_InitTypeDefstruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//发送接收使能
	USART_InitTypeDefstruct.USART_Parity = USART_Parity_No; //不使用奇偶校验
	USART_InitTypeDefstruct.USART_StopBits = USART_StopBits_1; //1个停止位
	USART_InitTypeDefstruct.USART_WordLength = USART_WordLength_8b; //8个数据位
	/*写入USART1*/
	USART_Init(USART1,&USART_InitTypeDefstruct);
	
	/*使能串口1*/
	USART_Cmd(USART1,ENABLE);

}


/*!
	\brief		UART1中断服务函数
	\param[in]	none
	\param[out]	none
	\retval 	none
*/

void USART1_IRQHandler(void)
{

}
	

/************************************************************** END OF FILE ****/
 
/**
  ******************************************************************************
  * @file           : user_fsmc.c
  * @brief          : V1.00
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */

/* Include 包含---------------------------------------------------------------*/
#include "user_fsmc.h"
/* Typedef 类型----------------------------------------------------------------*/
/* Define  定义----------------------------------------------------------------*/
/* Macro   宏------------------------------------------------------------------*/
/* Variables 变量--------------------------------------------------------------*/
/* Constants 常量--------------------------------------------------------------*/
/* Function  函数--------------------------------------------------------------*/

/*!
	\brief		FSMC初始化
	\param[in]	none
	\param[out]	none
	\retval 	none
*/
void FSMC_Init(void)
{	
	
	/*FSMC初始化结构体*/
	FSMC_NORSRAMTimingInitTypeDef  readWriteTiming;
	/*FSMC时序结构体*/
	FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
	
	/*初始化*/
 	readWriteTiming.FSMC_AddressSetupTime = 0x00;	 //地址建立时间(ADDSET)为1个HCLK 1/36M=27ns
    readWriteTiming.FSMC_AddressHoldTime = 0x00;	 //地址保持时间(ADDHLD)模式A未用到	
    readWriteTiming.FSMC_DataSetupTime = 0x03;		 //数据保持时间(DATAST)为3个HCLK 4/72M=55ns(对EM的SRAM芯片)	 
    readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
    readWriteTiming.FSMC_CLKDivision = 0x00;
    readWriteTiming.FSMC_DataLatency = 0x00;
    readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A;	 //模式A

	FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3;//  这里我们使用NE3 ,也就对应BTCR[4],[5]。
    FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; 
    FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM;  //SRAM   
    FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;//存储器数据宽度为16bit  
    FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable; 
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
	FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable;
    FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;   
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;  
    FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;	//存储器写使能 
    FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;  
    FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; // 读写使用相同的时序
    FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;  
    FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;
    FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &readWriteTiming; //读写同样时序

    FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);  //初始化FSMC配置

   	FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM3, ENABLE);  // 使能BANK3
}

/*!
	\brief		写数据函数
	\param[in]	none
	\param[out]	none
	\retval 	none
*/
void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 n)
{
	for(;n!=0;n--)  
	{										    
		*(vu8*)(Bank1_SRAM3_ADDR+WriteAddr)=*pBuffer;	  
		WriteAddr++; 
		pBuffer++;
	}   
}


/*!
	\brief		读数据函数
	\param[in]	none
	\param[out]	none
	\retval 	none
*/
void FSMC_SRAM_ReadBuffer(u8* pBuffer,u32 ReadAddr,u32 n)
{
	for(;n!=0;n--)  
	{											    
		*pBuffer++=*(vu8*)(Bank1_SRAM3_ADDR+ReadAddr);    
		ReadAddr++; 
	}  
}
/************************************************************** END OF FILE ****/
 
/**
  ******************************************************************************
  * @file           : user_mian.h
  * @brief          : V1.00
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */

/* Include 包含---------------------------------------------------------------*/
#include "stm32f10x.h"
#include <stdbool.h>
#include "user_gpio.h"
#include "user_delay.h"
#include "user_rcc_config.h"
#include "user_uart.h"
#include "user_fsmc.h"


/* Typedef 类型----------------------------------------------------------------*/
/* Define  定义----------------------------------------------------------------*/
/* Macro   宏------------------------------------------------------------------*/
/* Variables 变量--------------------------------------------------------------*/	 
u32 testsram[250000] __attribute__((at(0X68000000)));//创建数组SRAM地址为0x68000000
/* Constants 常量--------------------------------------------------------------*/
/* Function  函数--------------------------------------------------------------*/


 int main(void)
 {	
	 u32 i=0;  	  
	 u8 temp=0;
	 u8 sval=0;
	/*配置系统中断分组为2位抢占2位响应*/
	 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	 /*延时函数初始化*/
	 delay_init();
	/*RCC配置*/
	 Rcc_config();
	/*GPIO初始化*/ 
	 Gpio_Init();
	/*USART1初始化*/
	 Uart1_Init(9600);
	 /*初始化FSMC*/
	 FSMC_Init();
	 /*测试*/
	//每隔4K字节,写入一个数据,总共写入256个数据,刚好是1M字节
	for(i=0;i<1024*1024;i+=4096)
	{
		FSMC_SRAM_WriteBuffer(&temp,i,1);
		temp++;
	}
		//依次读出之前写入的数据,进行校验		  
 	for(i=0;i<1024*1024;i+=4096) 
	{
  		FSMC_SRAM_ReadBuffer(&temp,i,1);
		if(i==0)sval=temp;
 		else if(temp<=sval)break;//后面读出的数据一定要比第一次读到的数据大.	   		   
 	}
	
	/*死循环*/ 
	 while(1){

	}
		

}
 
 /************************************************************** END OF FILE ****/

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

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

相关文章

现在市场上IT人才大量涌现,现在开始学习编程,以后会有前途吗?

现在市场上IT人才大量涌现&#xff0c;如果我现在开始学习编程&#xff0c;以后会有前途吗&#xff1f;答案是肯定的&#xff0c;一定有前途而且前途远大&#xff01;下面分析一下具体原因&#xff1a; 未来一定是信息化社会 当今我们正处在第三次信息化浪潮中&#xff0c;这次…

P4 PyTorch 合并与分割

前言&#xff1a; 目录 cat stack split chunk一 cat&#xff08;合并&#xff09; df torch.cat([df1,df2,df3],dim0) 要合并的维度可以不相等&#xff0c;其它维度大小必须一样 应用场景&#xff1a; 比如有两个统计数据[class,students,scores] A [4,32,8], 4个…

架构师必读 —— 逻辑模型(5)

宏观在先&#xff0c;微观在后 如果只看局部判断问题&#xff0c;就会阻碍逻辑思考。首先&#xff0c;为了不迷失整体&#xff0c;就要从宏观捕捉事物。宏观是指整体和概要&#xff0c;微观是指局部、细节、个别的部分。我们要首先从宏观上考虑&#xff0c;再逐步展开至微观。 …

“ 这片绿茵场从不缺乏天才,努力才是最终的入场券——梅西 ”

前言 想了又想还是忍不住想发布一篇文章来纪念一下2022年的卡塔尔世界杯&#xff0c;这伟大的诸神黄昏之战。4年一届的世界杯像是一把衡量时间的坐标&#xff0c;正所谓青春不过几届世界杯&#xff01;2014巴西世界杯在上初一&#xff0c;2018俄罗斯世界杯在上高二&#xff0c;…

使用Easyswoole 搭建简单的Websoket服务

步骤1 修改配置文件MAIN_SERVER.SERVER_TYPE为EASYSWOOLE_WEB_SOCKET_SERVER 如dev.php <?php use EasySwoole\Log\LoggerInterface;return [SERVER_NAME>"EasySwoole",MAIN_SERVER>[LISTEN_ADDRESS>0.0.0.0,PORT>19501,"SERVER_TYPE&quo…

新鲜事儿!只有AI作品的电影节;酷~AI纹身设计师;ChatGPT的接生婆RLHF;Wayve自动驾驶模型MILE… | ShowMeAI资讯日报

&#x1f440;日报合辑 | &#x1f3a1;AI应用与工具大全 | &#x1f514;公众号资料下载 | &#x1f369;韩信子 &#x1f4e2; 『AI Film Festival』只接受AI作品的电影节&#xff0c;一万美元奖金花落谁家&#xff1f; https://aiff.runwayml.com/ Runway ML公司12月7日推…

前端开发--JavaScript基础知识点大全

前端开发--JavaScript基础知识点大全JavaScript 基础1、JavaScript介绍2、变量3、数据类型4、类型转换5、 运算符6、语句6.1 表达式和语句6.2 分支语句6.3 循环语句7、数组8、函数9、对象10、更多JavaScript 基础 1、JavaScript介绍 JavaScript是一种运行在客户端&#xff08…

一个桌面弹幕软件,用来记单词刚刚好

弹幕单词是一款桌面弹幕软件&#xff0c;它可以把词条以弹幕的形式呈现在桌面上&#xff0c;不管这个词条是英语单词还是中文成语&#xff0c;只要结合了相关资料&#xff0c;就非常方便的使用鼠标右键查看此弹幕的相关资料&#xff0c;下面我们来看看这个软件如何使用吧 快速入…

大学生家乡主题甘肃介绍网页代码 dreamweaver网页设计作业制作 WEB静态网页作业模板 dw个人网页作业成品

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

前端vue面试题集锦1

Vue.extend 作用和原理 官方解释&#xff1a;Vue.extend 使用基础 Vue 构造器&#xff0c;创建一个“子类”。参数是一个包含组件选项的对象。 其实就是一个子类构造器 是 Vue 组件的核心 api 实现思路就是使用原型继承的方法返回了 Vue 的子类 并且利用 mergeOptions 把传入…

使用Mock技术帮助提升测试效率的小tips,你知道几个?

Mock是什么&#xff1f; 我给你描述一下这几个场景&#xff0c;你看看是不是熟悉的呢&#xff1f; 测试一个业务模块&#xff0c;这个业务模块中有几个接口对接到了第三方&#xff0c;因为第三方延期交付&#xff0c;导致项目延期&#xff0c;我又背锅了 我想测试前端页面字体…

作为测试人员,你需要掌握哪些,常用软件测试工具?

前言 作为软件测试人员&#xff0c;你最常用到的测试工具都有哪些呢&#xff1f;本文总结了测试过程中常用的工具&#xff0c;希望对从业人员日常工作有所助益&#xff01; 包含工具内容 测试管理工具 连接服务器 抓包工具 接口测试工具 app自动化工具 性能测试工具 持续集成…

[附源码]计算机毕业设计Node.js橙光公司网站设计论文(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

nodejs+vue067高校 校园疫情防控系统

录 1 绪论 1 1.1 研究背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统关键技术 3 2.3 MYSQL数据库 4 2.4 B/S结构 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2经济可行性 5 3.1.3操作可行性 5 3.2 系统性能分析 5 3.3 …

Windows10下用Vscode配置OpenCV (解包即用版)

Windows10下用Vscode配置OpenCV (解包即用版) 维基百科&#xff1a; OpenCV的全称是Open Source Computer Vision Library&#xff0c;是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发&#xff0c;以BSD许可证授权发行&#xff0c;可以在商业和研究领域中免费…

三、详细功能

详细功能 1.去除不同数据库间重复的文献&#xff1a;Reference->Find Duplicates &#xff08;1&#xff09;找到4篇重复的文章&#xff1a;Keep this record可以一篇篇的保留、删除 &#xff08;2&#xff09;按Cancel再按ctrl找到所有重复&#xff1a; &#xff08;3&am…

长达22643字的博客:自定义游戏三子棋超详细解说手把手式教学,人机大战,PVP玩家对战功能制作详解

&#x1f992;这个游戏相信大家都听过&#xff0c;三子棋&#xff0c;不就是井字棋吗&#xff1f;那么今天我们就来亲手制作一个三子棋游戏&#xff0c;实现人机“智能”大战以及玩家PVP对战。 &#x1f412;三子棋的基本功能构思 &#x1f992;面对一个较大的游戏程序我们要做…

(附源码)Springboot社区疫情防控管理系统 毕业设计 164621

Springboot 社区疫情防控管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对社区疫情…

校园生活互助网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 体智慧校园生活互助系统主要实现以下功能&#xff1a; (一)网站前台&#xff1a;关于我们、联系我们、公告信息、求助信…

DataGear 添加 Http 数据集是请求头 JSON 的格式说明

背景 玩了一下 DataGear &#xff0c;添加了一个 Http 接口的数据集&#xff0c;由于目标接口请求必须包含 Token 信息&#xff0c;所以按照配置提示添加 JSON 格式的头信息时&#xff0c;想象成了 JSON 对象&#xff0c;结果预览请求始终报错。 DataGear 的后台异常信息&…