嵌入式系统设计(STM32)第4讲课件_第1页
嵌入式系统设计(STM32)第4讲课件_第2页
嵌入式系统设计(STM32)第4讲课件_第3页
嵌入式系统设计(STM32)第4讲课件_第4页
嵌入式系统设计(STM32)第4讲课件_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4讲中断第4讲中断实验三独立按键控制实验目的:掌握独立按键的工作原理及按键控制程序的编写方法。实验内容:PA口的四个按键,任意键闭合,4个LED灯呈现不同的显示状态。实验三独立按键控制实验目的:掌握独立按键的工作原理及按键实验四按键中断实验实验目的:掌握STM32中断系统的工作原理,掌握利用函数库编写中断初始化程序与中断服务程序的方法。实验内容:(1)选4个独立按键中任意一个作为外部中断输入,4个LED正常以流水灯点亮,按键闭合后,4个灯同时循环亮灭4次,重新回到流水灯状态。(2)中断嵌套实验。主循环是流水灯,按键1中断,4个灯同时循环亮灭10次;按键2可以在中断按键1的程序,1、3和2、4灯交替点亮5次。实验四按键中断实验实验目的:掌握STM32中断系统的工作实验五键盘识别与数码显示实验目的:掌握矩阵键盘的按键识别原理,以及数码管显示的方法。实验内容:将矩阵键盘上的按键编号显示在数码管上。(1)只用1位显示。(2)每按键一次,显示向左移一位,最多显示6位。接口电路参见光盘资料实验五键盘识别与数码显示实验目的:掌握矩阵键盘的按键识别原主要内容4.1基本概念4.2中断源4.3中断优先级4.4STM32中断寄存器4.5STM32中断库函数4.6中断编程举例4.7练习题主要内容4.1基本概念4.1基本概念中断是指由于内部或者外部事件使CPU暂停当前程序,转去执行中断服务程序的一种工作机制。中断系统由中断源、中断控制、中断响应几部分组成。中断源:中断请求的来源。中断控制:中断的允许/禁止,中断优先级与优先级嵌套。中断响应:保护断点,转去执行中断服务程序。返回4.1基本概念中断是指由于内部或者外部事件使CPU暂停当4.2中断源ARMcortex_m3内核支持256个中断(16个内核+240外部)和可编程256级中断优先级的设置,与其相关的中断控制和中断优先级控制寄存器(NVIC、SYSTICK等)也都属于cortex_m3内核的部分。STM32采用了cortex_m3内核,但STM32并没有使用cortex_m3内核全部的东西(如内存保护单元MPU等),因此它的NVIC是cortex_m3内核的NVIC的子集。

STM32目前支持的中断共为84个(16个内核+68个外部),和16级(使用了4位中断优先级控制)可编程中断优先级的设置。4.2中断源ARMcortex_m3内核支持256个中断异常和中断的概念中断:该请求信号来自CM3内核的外面,来自各种片上外设和外扩的外设。异常:是因CM3内核的活动产生的,即执行指令或访问存储器时产生。CM3有15个异常,类型号为1~15,没有编号为0的异常。挂起:一个发生的异常不能被立即响应,就称它为挂起。异常和中断的概念中断:该请求信号来自CM3内核的外面,来自各中断的特点对于互联型产品,外部中断/事件控制器由20个产生事件/中断请求的边沿检测器组成,对于其它产品,则有19个能产生事件/中断请求的边沿检测器。每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。中断的特点对于互联型产品,外部中断/事件控制器由20个产生事外部中断(EXTI)外部中断/事件控制器(EXTI)有19个中断请求边沿检测器。每个中断/事件都有独立的触发和屏蔽每个中断线都有专用的状态位EXTI0---EXTI15:连到IO端口,每个EXTIj对应GPIOx的引脚j。通过软件配置,设定中断来自哪个引脚。EXTI16:PVD(programmablevoltagedetector)输出EXTI17:RTC(real-timeclock)闹钟事件EXTI18:USB唤醒事件EXTI19:连接到以太网唤醒事件(只适用于互联型产品)外部中断(EXTI)外部中断/事件控制器(EXTI)有19个硬件中断选择通过下面的过程来配置19个线路做为中断源:配置19个中断线的屏蔽位(EXTI_IMR)配置所选中断线的触发选择位(EXTI_RTSR和EXTI_FTSR);配置对应到外部中断控制器(EXTI)的NVIC中断通道的使能和屏蔽位,使得19个中断线中的请求可以被正确地响应。硬件中断选择通过下面的过程来配置19个线路做为中断源:外部中断/事件控制器框图外部中断/事件控制器框图要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置2个触发寄存器,同时在中断屏蔽寄存器的相应位写’1’允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置’1’。在挂起寄存器的对应位写’1’,可以清除它,也可以通过改变边沿检测的极性清除。

如果需要产生事件,必须先配置好并使能事件线。根据需要的边沿检测通过设置2个触发寄存器,同时在事件屏蔽寄存器的相应位写’1’允许事件请求。当事件线上发生了需要的边沿时,将产生一个事件请求脉冲,对应的挂起位不被置’1’。通过在软件中断/事件寄存器写’1’,也可以通过软件产生中断/事件请求。要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置112通用I/O端口以下图的方式连接到16个外部中断/事件线上:112通用I/O端口以下图的方式连接到16个外部中断/事件线EXTICR:外部中断线路0-15配置寄存器有4个32位的外部中断线路配置寄存器,高16位保留,低16位用来定义外部中断线路。EXTICR:外部中断线路0-15配置寄存器有4个32位的EXTICR:外部中断线路0-15配置寄存器EXTIx[3:0]:EXTIx配置(x=0…3)(EXTIxconfiguration)这些位可由软件读写,用于选择EXTIx外部中断的输入源。0000:PA[x]引脚0001:PB[x]引脚0010:PC[x]引脚0011:PD[x]引脚0100:PE[x]引脚0101:PF[x]引脚0110:PG[x]引脚EXTICR:外部中断线路0-15配置寄存器EXTIx[3配置中断线路函数GPIO_EXTILineConfig功能描述:选择GPIO管脚用作外部中断线路函数原形:

voidGPIO_EXTILineConfig(u8GPIO_PortSource,u8GPIO_PinSource)输入参数1:

GPIO_PortSource----选择用作外部中断线源的GPIO端口输入参数2:

GPIO_PinSource----待设置的外部中断线路例:/*SelectsPB.8asEXTILine8*/

GPIO_EXTILineConfig(GPIO_PortSource_GPIOB,GPIO_PinSource8);配置中断线路函数GPIO_EXTILineConfig功能外部中断的触发方式上升沿、下降沿、上升沿/下降沿EXTI_Trigger_Falling:设置输入线路下降沿为中断请求EXTI_Trigger_Rising:设置输入线路上升沿为中断请求EXTI_Trigger_Rising_Falling:设置输入线路双边触发中断请求EXTI_Mode_Event:设置EXTI线路为事件EXTI_Mode_Interrupt:设置EXTI线路为中断请求EXTI_LineCmd:用来定义选中线路的新状态。它可以被设为ENABLE或者DISABLE。外部中断的触发方式上升沿、下降沿、上升沿/下降沿中断初始化函数EXTI_Init例:/*Enablesexternallines12and14interruptgenerationonfallingedge*/

EXTI_InitTypeDefEXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line12|EXTI_Line14;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);

返回中断初始化函数EXTI_Init例:/*Enablese4.3中断优先级中断优先级分组:STM32有5种优先级管理方式,在一个系统中,选用其中一种。通过设置32位寄存器AIRC的[10:8]位,指定组别。优先级分组:第0组:16个从优先级第1组:2个抢占优先级,8个从优先级第2组:4个抢占优先级,4个从优先级第3组:8个抢占优先级,2个从优先级第4组:16个抢占优先级4.3中断优先级中断优先级分组:STM32有5种优先级管理优先级控制说明具有较高抢占优先级的中断(数字小的)可以实现中断嵌套。从优先级不管高低,只能排队。在抢占优先级相同时,先响应从优先级高的中断。抢占优先级和从优先级都相同时,根据它们在中断表中的排位顺序决定,序号小的先被处理。例:/*ConfigurethePriorityGroupingwith1bit*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);优先级控制说明具有较高抢占优先级的中断(数字小的)可以实现中4.4STM32中断寄存器EXTI_IMR:中断屏蔽寄存器

0:屏蔽来自线x上的中断请求;1:开放来自线x上的中断请求。EXTI_EMR:事件屏蔽寄存器

0:屏蔽来自线x上的事件请求;1:开放来自线x上的事件请求。EXTI_RTSR:上升沿触发选择寄存器

1:允许输入线x上的上升沿触发(中断和事件);0:禁止。EXTI_FTSR:下降沿触发选择寄存器

1:允许输入线x上的下降沿触发(中断和事件);0:禁止。EXTI_SWIER:软件中断事件寄存器

当某位为’0’时,写’1’将设置EXTI_PR中相应的挂起位。如果在EXTI_IMR和EXTI_EMR中允许产生该中断,则此时将产生一个中断。注:通过清除EXTI_PR的对应位(写入’1’),可以清除该位为’0’。

EXTI_PR:挂起寄存器当在外部中断线上发生了选择的边沿事件,该位被置’1’。在该位中写入’1’可以清除它,也可以通过改变边沿检测的极性清除。4.4STM32中断寄存器EXTI_IMR:中断屏蔽寄存器返回返回EXTI库函数EXTI_DeInit:将外设EXTI寄存器重设为缺省值EXTI_Init:根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器。EXTI_StructInit:把EXTI_InitStruct中的每一个参数按缺省值填入。EXTI_GenerateSWInterrupt:产生一个软件中断。EXTI_GetFlagStatus:检查指定的EXTI线路标志位设置与否。EXTI_ClearFlag:清除EXTI线路挂起标志位。EXTI_GetITStatus:检查指定的EXTI线路触发请求发生与否。EXTI_ClearITPendingBit:清除EXTI线路挂起位EXTI库函数EXTI_DeInit:将外设EXTI寄存器函数EXTI_Init

功能描述:根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器。函数原形:

voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct)输入参数:

EXTI_InitStruct----指向结构EXTI_InitTypeDef的指针。函数EXTI_Init功能描述:根据EXTI_InitSEXTI_InitTypeDef定义于文件“stm32f10x_exti.h”:

typedefstruct{u32EXTI_Line;EXTIMode_TypeDefEXTI_Mode;EXTIrigger_TypeDefEXTI_Trigger;FunctionalStateEXTI_LineCmd;} EXTI_InitTypeDef;EXTI_InitTypeDef定义于文件“stm32f10EXTI_Line:EXTI_Line0----EXTI_Line18,其中之一。EXTI_Mode:

EXTI_Mode_Event或者EXTI_Mode_InterruptEXTI_Trigger:

EXTI_Trigger_Falling或者EXTI_Trigger_Rising

或者EXTI_Trigger_Rising_FallingEXTI_LineCmd:ENABLE或者DISABLEEXTI_Line:EXTI_Line0----EXTI例:/*Enablesexternallines12and14interruptgenerationonfallingedge*/EXTI_InitTypeDefEXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line12|EXTI_Line14;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);

例:/*Enablesexternallines1函数EXTI_GetFlagStatus

功能描述:检查指定的EXTI线路标志位设置与否函数原形:

FlagStatusEXTI_GetFlagStatus(u32EXTI_Line)输入参数:EXTI_Line---待检查的EXTI线路标志位。返回值:EXTI_Line的新状态(SET或者RESET)例:/*GetthestatusofEXTIline8*/FlagStatusEXTIStatus;EXTIStatus=EXTI_GetFlagStatus(EXTI_Line8);函数EXTI_GetFlagStatus功能描述:检查指定固态函数库的编码规则布尔型typedefenum{FALSE=0,TRUE=!FALSE}bool;标志位状态类型typedefenum{RESET=0,SET=!RESET}FlagStatus;固态函数库的编码规则布尔型标志位状态类型错误状态类型typedefenum{ERROR=0,SUCCESS=!ERROR}ErrorStatus;功能状态类型

typedefenum{DISABLE=0,ENABLE=!DISABLE}FunctionalState;错误状态类型功能状态类型固态函数库定义了24个变量类型,它们的类型和大小是固定的。typedefsignedlongs32;typedefsignedshorts16;typedefsignedchars8;typedefsignedlongconstsc32;/*ReadOnly*/typedefsignedshortconstsc16;/*ReadOnly*/typedefsignedcharconstsc8;/*ReadOnly*/typedefvolatilesignedlongvs32;typedefvolatilesignedshortvs16;typedefvolatilesignedcharvs8;typedefvolatilesignedlongconstvsc32;/*ReadOnly*/typedefvolatilesignedshortconstvsc16;/*ReadOnly*/typedefvolatilesignedcharconstvsc8;/*ReadOnly*/固态函数库定义了24个变量类型,它们的类型和大小是固定的。ttypedefunsignedlongu32;typedefunsignedshortu16;typedefunsignedcharu8;typedefunsignedlongconstuc32;/*ReadOnly*/typedefunsignedshortconstuc16;/*ReadOnly*/typedefunsignedcharconstuc8;/*ReadOnly*/typedefvolatileunsignedlongvu32;typedefvolatileunsignedshortvu16;typedefvolatileunsignedcharvu8;typedefvolatileunsignedlongconstvuc32;/*ReadOnly*/typedefvolatileunsignedshortconstvuc16;/*ReadOnly*/typedefvolatileunsignedcharconstvuc8;/*ReadOnly*/typedefunsignedlongu32;函数EXTI_ClearFlag

功能描述:清除EXTI线路挂起标志位。函数原形:voidEXTI_ClearFlag(u32EXTI_Line)输入参数:EXTI_Line----待清除标志位的EXTI线路例:

/*CleartheEXTIline2pendingflag*/EXTI_ClearFlag(EXTI_Line2);函数EXTI_ClearFlag功能描述:清除EXTI线路函数EXTI_GetITStatus

功能描述:检查指定的EXTI线路触发请求发生与否。(检查中断请求&中断允许控制位)函数原形:

ITStatusEXTI_GetITStatus(u32EXTI_Line)返回值:EXTI_Line的新状态(SET或者RESET)例:/*GetthestatusofEXTIline8*/ITStatusEXTIStatus;EXTIStatus=EXTI_GetITStatus(EXTI_Line8);函数EXTI_GetITStatus功能描述:检查指定的E函数EXTI_ClearITPendingBit

功能描述:清除EXTI线路挂起位函数原形:

voidEXTI_ClearITPendingBit(u32EXTI_Line)例:/*ClearstheEXTIline2interruptpendingbit*/EXTI_ClearITpendingBit(EXTI_Line2);函数EXTI_ClearITPendingBit功能描述:NVIC库函数NVIC_DeInit:将外设NVIC寄存器重设为缺省值NVIC_PriorityGroupConfig:设置优先级分组NVIC_Init:根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器。NVIC_SetVectorTable:设置向量表的位置和偏移NVIC库函数NVIC_DeInit:将外设NVIC寄存器函数NVIC_PriorityGroupConfig功能:用来设置优先级分组(先占优先级和从优先级)函数原形:

voidNVIC_PriorityGroupConfig(u32NVIC_PriorityGroup)例:/*ConfigurethePriorityGroupingwith1bit*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);函数NVIC_PriorityGroupConfig功能:用NVIC_PriorityGroup描述NVIC_PriorityGroup函数NVIC_Init

功能描述:根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器。函数原形:

voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct)输入参数:

NVIC_InitStruct----指向结构NVIC_InitTypeDef的指针。函数NVIC_Init功能描述:根据NVIC_InitSNVIC_InitTypeDefstructure

NVIC_InitTypeDef定义于文件“stm32f10x_nvic.h”:

typedefstruct{u8NVIC_IRQChannel;u8NVIC_IRQChannelPreemptionPriority;u8NVIC_IRQChannelSubPriority;FunctionalStateNVIC_IRQChannelCmd;}NVIC_InitTypeDef;NVIC_IRQChannelCmd:指定了在成员NVIC_IRQChannel中定义的IRQ通道被使能还是失能NVIC_InitTypeDefstructureNVINVIC_IRQChannel值EXTI0_IRQChannel:外部中断线0中断EXTI1_IRQChannel:外部中断线1中断EXTI2_IRQChannel:外部中断线2中断EXTI3_IRQChannel:外部中断线3中断EXTI4_IRQChannel:外部中断线4中断EXTI9_5_IRQChannel:外部中断线9-5中断EXTI15_10_IRQChannel:外部中断线15-10中断TIM2_IRQChannel:TIM2全局中断TIM3_IRQChannel:TIM3全局中断TIM4_IRQChannel:TIM4全局中断…………NVIC_IRQChannel值EXTI0_IRQChann例:NVIC_InitTypeDefNVIC_InitStructure;/*ConfigurethePriorityGroupingwith1bit*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

/*EnableTIM3globalinterruptwithPreemptionPriority0andSubPriorityas2*/NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure(&NVIC_InitStructure);

//EnableEXTI4interruptwithPreemptionPriority1andSubPriorityas7NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=7;NVIC_InitStructure(&NVIC_InitStructure);例:函数NVIC_StructInit

功能描述:把NVIC_InitStruct中的每一个参数按缺省值填入。

成员

缺省值NVIC_IRQChannel 0x0NVIC_IRQChannelPreemptionPriority 0NVIC_IRQChannelSubPriority 0NVIC_IRQChannelCmd DISABLE例:

NVIC_InitTypeDefNVIC_InitStructure;NVIC_StructInit(&NVIC_InitStructure);

返回函数NVIC_StructInit功能描述:把NVIC_I4.6中断编程举例定义变量声明函数主程序配置时钟配置中断优先级配置GPIO配置EXTI主循环4个LED循环点亮中断服务函数1,2灯和3,4灯交替点亮5次4.6中断编程举例定义变量#include"stm32f10x_lib.h" ErrorStatusHSEStartUpStatus;externvu32TimingDelay;u8ReadValue1,ReadValue2,ReadValue3,ReadValue4;voidRCC_Configuration(void); voidGPIO_Configuration(void);voidNVIC_Configuration(void);voidEXTI_Configuration(void);externvoidDelay(vu32nTime);#include"stm32f10x_lib.h" intmain() { RCC_Configuration(); /*配置系统时钟*/ NVIC_Configuration(); /*配置中断优先级*/ GPIO_Configuration(); /*IO口初始化*/ EXTI_Configuration(); /*配置外部中断*/

while(1) { GPIOC->ODR=0xfffffffe; /*PC0=0-->点亮D2*/ Delay(8000000); GPIOC->ODR=0xfffffffd; /*PC1=0-->点亮D3*/ Delay(8000000); GPIOC->ODR=0xfffffffb; /*PC2=0-->点亮D4*/ Delay(8000000); GPIOC->ODR=0xfffffff7; /*PC3=0-->点亮D5*/ Delay(8000000); }}intmain() voidRCC_Configuration(){//系统时钟配置,略。

//使能外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);}voidDelay(vu32nCount) /*延时*/{for(;nCount!=0;nCount--);}voidRCC_Configuration()voidEXTI_Configuration(){GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource3); EXTI_InitTypeDefEXTI_InitStructure; EXTI_InitStructure.EXTI_Line=EXTI_Line3; EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd=ENABLE; EXTI_Init(&EXTI_InitStructure);}voidEXTI_Configuration()voidNVIC_Configuration(){ NVIC_InitTypeDefNVIC_InitStructure;

/*SettheVectorTablebaselocationat0x20000000*///设置向量表的位置和偏移

#ifdefVECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0); #else/*VECT_TAB_FLASHSettheVectorTablebaselocationat0x08000000*/ NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0); #endif /*Configureonebitforpreemptionpriority*/ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);}voidNVIC_Configuration()voidGPIO_Configuration() /*IO口初始化*/{ GPIO_InitTypeDefGPIO_InitStructure; /*PA0~PA3口配置为输入*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); /*PC0~PC3口配置为输出*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitStructure);}voidGPIO_Configuration() /中断服务程序voidEXTI3_IRQHandler(void){ inti=0; if(EXTI_GetITStatus(EXTI_Line3)!=RESET) { EXTI_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论