基于STM32的医用控温毯控制系统的设计-源代码_第1页
基于STM32的医用控温毯控制系统的设计-源代码_第2页
基于STM32的医用控温毯控制系统的设计-源代码_第3页
基于STM32的医用控温毯控制系统的设计-源代码_第4页
基于STM32的医用控温毯控制系统的设计-源代码_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

void LED_GPIO_Init(void) /* 定义IO硬件初始化结构体变量 */ GPIO_InitTypeDef GPIO_InitStruct;/* 使能(开启)LED引脚对应IO端口时钟 */ LED1_RCC_CLK_ENABLE(); LED2_RCC_CLK_ENABLE(); /* 配置LED1引脚输出电压 */ HAL_GPIO_WritePin(LED1_GPIO, LED1_GPIO_PIN, GPIO_PIN_RESET); /* 配置LED2引脚输出电压 */ HAL_GPIO_WritePin(LED2_GPIO, LED2_GPIO_PIN, GPIO_PIN_RESET); /* 设定LED1对应引脚IO编号 */ GPIO_InitStruct.Pin = LED1_GPIO_PIN; /* 设定LED1对应引脚IO为输出模式 */ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; /* 设定LED1对应引脚IO操作速度 */ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; /* 初始化LED1对应引脚IO */ HAL_GPIO_Init(LED1_GPIO, &GPIO_InitStruct); /* 设定LED2对应引脚IO编号 */ GPIO_InitStruct.Pin = LED2_GPIO_PIN; /* 设定LED2对应引脚IO为输出模式 */ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; /* 设定LED2对应引脚IO操作速度 */ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; /* 初始化LED2对应引脚IO */ HAL_GPIO_Init(LED2_GPIO, &GPIO_InitStruct);/* * 函数功能: 设置板载LED灯的状态 * 输入参数: LEDx:其中x可甚至为(1,2,3)用来选择对应的LED灯 * 输入参数:state:设置LED灯的输出状态。 * 可选值:LED_OFF:LED灯灭; * LED_ON: LED灯亮。 * LED_TOGGLE:反转LED * 返 回 值: 无 * 说 明:该函数使用类似标准库函数的编程方法,方便理解标准库函数编程思想。 */void LEDx_StateSet(uint8_t LEDx,LEDState_TypeDef state) /* 检查输入参数是否合法 */ assert_param(IS_LED_TYPEDEF(LEDx); assert_param(IS_LED_STATE(state); /* 判断设置的LED灯状态,如果设置为LED灯灭 */ if(state=LED_OFF) if(LEDx & LED1) LED1_OFF;/* LED1灭 */ if(LEDx & LED2) LED2_OFF;/* LED2灭 */ else if(state=LED_ON) /* 设置LED灯为亮 */ if(LEDx & LED1) LED1_ON;/* LED1亮 */ if(LEDx & LED2) LED2_ON;/* LED2亮 */ else if(LEDx & LED1) LED1_TOGGLE;/* 设置引脚输出反转 */ if(LEDx & LED2) LED2_TOGGLE;/* 设置引脚输出反转 */ void HAL_UART_MspInit(UART_HandleTypeDef* huart) GPIO_InitTypeDef GPIO_InitStruct; if(huart-Instance=DEBUG_USARTx) /* 串口外设时钟使能 */ DEBUG_USART_RCC_CLK_ENABLE(); /* 串口外设功能GPIO配置 */ GPIO_InitStruct.Pin = DEBUG_USARTx_Tx_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(DEBUG_USARTx_Tx_GPIO, &GPIO_InitStruct); GPIO_InitStruct.Pin = DEBUG_USARTx_Rx_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(DEBUG_USARTx_Rx_GPIO, &GPIO_InitStruct); /* * 函数功能: 串口硬件反初始化配置 * 输入参数: huart:串口句柄类型指针 * 返 回 值: 无 * 说 明: 该函数被HAL库内部调用 */void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) if(huart-Instance=DEBUG_USARTx) /* 串口外设时钟禁用 */ DEBUG_USART_RCC_CLK_DISABLE(); /* 串口外设功能GPIO配置 */ HAL_GPIO_DeInit(DEBUG_USARTx_Tx_GPIO, DEBUG_USARTx_Tx_GPIO_PIN); HAL_GPIO_DeInit(DEBUG_USARTx_Rx_GPIO, DEBUG_USARTx_Rx_GPIO_PIN); /* 串口中断禁用 */ HAL_NVIC_DisableIRQ(DEBUG_USART_IRQn); /* * 函数功能: 串口参数配置. * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */void MX_DEBUG_USART_Init(void) /* 使能串口功能引脚GPIO时钟 */ DEBUG_USARTx_GPIO_ClK_ENABLE(); husart_debug.Instance = DEBUG_USARTx; husart_debug.Init.BaudRate = DEBUG_USARTx_BAUDRATE; husart_debug.Init.WordLength = UART_WORDLENGTH_9B; husart_debug.Init.StopBits = UART_STOPBITS_1; husart_debug.Init.Parity = UART_PARITY_EVEN; husart_debug.Init.Mode = UART_MODE_TX_RX; husart_debug.Init.HwFlowCtl = UART_HWCONTROL_NONE; husart_debug.Init.OverSampling = UART_OVERSAMPLING_16; HAL_UART_Init(&husart_debug); /* * 函数功能: 重定向c库函数printf到DEBUG_USARTx * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */int fputc(int ch, FILE *f) HAL_UART_Transmit(&husart_debug, (uint8_t *)&ch, 1, 0xffff); return ch;/* * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */int fgetc(FILE * f) uint8_t ch = 0; HAL_UART_Receive(&husart_debug,&ch, 1, 0xffff); return ch;static void Show_Message(void) printf(rn 这是一个通过串口通信指令控制LED灯实验 n); printf(使用 USART1 参数为:%d 9-E-1 n,DEBUG_USARTx_BAUDRATE); printf(指令对应如下:n); printf( 指令 - 状态 n); printf( 1 - LED1翻转 n); printf( 2 - LED2翻转 n);/* * 函数功能: 主函数. * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */int main(void) uint8_t ch; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); /* 板载LED初始化 */ LED_GPIO_Init(); /* 打印指令输入提示信息 */ Show_Message(); /* 无限循环 */ while (1) /* 获取字符指令 */ ch=getchar(); printf(接收到字符:%cn,ch); /* 根据字符指令控制RGB彩灯颜色 */ switch(ch) case 1: LED1_TOGGLE; /LED1翻转 break; case 2: LED2_TOGGLE; /LED2翻转 break; default: /* 如果不是指定指令字符,打印提示信息 */ Show_Message(); break; /* * 函数功能: 系统时钟配置 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */void SystemClock_Config(void) RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; / 外部晶振,8MHz RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; / 9倍频,得到72MHz主时钟 HAL_RCC_OscConfig(&RCC_OscInitStruct); RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; / 系统时钟:72MHz RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; / AHB时钟:72MHz RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; / APB1时钟:36MHz RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; / APB2时钟:72MHz HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2); / HAL_RCC_GetHCLKFreq()/1000 1ms中断一次/ HAL_RCC_GetHCLKFreq()/100000 10us中断一次/ HAL_RCC_GetHCLKFreq()/1000000 1us中断一次 HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); / 配置并启动系统滴答定时器 /* 系统滴答定时器时钟源 */ HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* 系统滴答定时器中断优先级配置 */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);/* * * File Name : stm32f1xx_hal_msp.c * Description : This file provides code for the MSP Initialization * and de-Initialization codes. * * * */* Includes -*/#include stm32f1xx_hal.h/* USER CODE BEGIN 0 */* USER CODE END 0 */* * Initializes the Global MSP. */void HAL_MspInit(void) /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ _HAL_RCC_AFIO_CLK_ENABLE(); HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); /* System interrupt init*/ /* MemoryManagement_IRQn interrupt configuration */ HAL_NVIC_SetPriority(MemoryManagement_IRQn, 0, 0); /* BusFault_IRQn interrupt configuration */ HAL_NVIC_SetPriority(BusFault_IRQn, 0, 0); /* UsageFault_IRQn interrupt configuration */ HAL_NVIC_SetPriority(UsageFault_IRQn, 0, 0); /* DebugMonitor_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DebugMonitor_IRQn, 0, 0); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */* USER CODE BEGIN 1 */* USER CODE END 1 */* * */* * */* * 函数功能: 板载按键IO引脚初始化. * 输入参数: 无 * 返 回 值: 无 * 说 明:使用宏定义方法代替具体引脚号,方便程序移植,只要简单修改bsp_key.h * 文件相关宏定义就可以方便修改引脚。 */void KEY_GPIO_Init(void) /* 定义IO硬件初始化结构体变量 */ GPIO_InitTypeDef GPIO_InitStruct;/* 使能(开启)KEY引脚对应IO端口时钟 */ KEY1_RCC_CLK_ENABLE(); KEY2_RCC_CLK_ENABLE(); KEY3_RCC_CLK_ENABLE(); /* 配置KEY1 GPIO:输入下拉模式 */ GPIO_InitStruct.Pin = KEY1_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(KEY1_GPIO, &GPIO_InitStruct); /* 配置KEY2 GPIO:输入上拉模式 */ GPIO_InitStruct.Pin = KEY2_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(KEY2_GPIO, &GPIO_InitStruct); /* 配置KEY3 GPIO:输入上拉模式 */ GPIO_InitStruct.Pin = KEY3_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(KEY3_GPIO, &GPIO_InitStruct);/* * 函数功能: 读取按键KEY1的状态 * 输入参数:无 * 返 回 值: KEY_DOWN:按键被按下; * KEY_UP :按键没被按下 * 说 明:无。 */KEYState_TypeDef KEY1_StateRead(void) /* 读取此时按键值并判断是否是被按下状态,如果是被按下状态进入函数内 */ if(HAL_GPIO_ReadPin(KEY1_GPIO,KEY1_GPIO_PIN)=KEY1_DOWN_LEVEL) /* 延时一小段时间,消除抖动 */ HAL_Delay(10); /* 延时时间后再来判断按键状态,如果还是按下状态说明按键确实被按下 */ if(HAL_GPIO_ReadPin(KEY1_GPIO,KEY1_GPIO_PIN)=KEY1_DOWN_LEVEL) /* 等待按键弹开才退出按键扫描函数 */ while(HAL_GPIO_ReadPin(KEY1_GPIO,KEY1_GPIO_PIN)=KEY1_DOWN_LEVEL); /* 按键扫描完毕,确定按键被按下,返回按键被按下状态 */ return KEY_DOWN; /* 按键没被按下,返回没被按下状态 */ return KEY_UP;/* * 函数功能: 读取按键KEY2的状态 * 输入参数:无 * 返 回 值: KEY_DOWN:按键被按下; * KEY_UP :按键没被按下 * 说 明:无。 */KEYState_TypeDef KEY2_StateRead(void) /* 读取此时按键值并判断是否是被按下状态,如果是被按下状态进入函数内 */ if(HAL_GPIO_ReadPin(KEY2_GPIO,KEY2_GPIO_PIN)=KEY2_DOWN_LEVEL) /* 延时一小段时间,消除抖动 */ HAL_Delay(10); /* 延时时间后再来判断按键状态,如果还是按下状态说明按键确实被按下 */ if(HAL_GPIO_ReadPin(KEY2_GPIO,KEY2_GPIO_PIN)=KEY2_DOWN_LEVEL) /* 等待按键弹开才退出按键扫描函数 */ while(HAL_GPIO_ReadPin(KEY2_GPIO,KEY2_GPIO_PIN)=KEY2_DOWN_LEVEL); /* 按键扫描完毕,确定按键被按下,返回按键被按下状态 */ return KEY_DOWN; /* 按键没被按下,返回没被按下状态 */ return KEY_UP;/* * 函数功能: 读取按键KEY3的状态 * 输入参数:无 * 返 回 值: KEY_DOWN:按键被按下; * KEY_UP :按键没被按下 * 说 明:无。 */KEYState_TypeDef KEY3_StateRead(void) /* 读取此时按键值并判断是否是被按下状态,如果是被按下状态进入函数内 */ if(HAL_GPIO_ReadPin(KEY3_GPIO,KEY3_GPIO_PIN)=KEY3_DOWN_LEVEL) /* 延时一小段时间,消除抖动 */ HAL_Delay(10); /* 延时时间后再来判断按键状态,如果还是按下状态说明按键确实被按下 */ if(HAL_GPIO_ReadPin(KEY3_GPIO,KEY3_GPIO_PIN)=KEY3_DOWN_LEVEL) /* 等待按键弹开才退出按键扫描函数 */ while(HAL_GPIO_ReadPin(KEY3_GPIO,KEY3_GPIO_PIN)=KEY3_DOWN_LEVEL); /* 按键扫描完毕,确定按键被按下,返回按键被按下状态 */ return KEY_DOWN; /* 按键没被按下,返回没被按下状态 */ return KEY_UP;*/* 包含头文件 -*/#include DS18B20/bsp_DS18B20.h/* 私有类型定义 -*/* 私有宏定义 -*/#define Delay_ms(x) HAL_Delay(x)/* 私有变量 -*/* 扩展变量 -*/* 私有函数原形 -*/static void DS18B20_Mode_IPU(void);static void DS18B20_Mode_Out_PP(void);static void DS18B20_Rst(void);static uint8_t DS18B20_Presence(void);static uint8_t DS18B20_ReadBit(void);static uint8_t DS18B20_ReadByte(void);static void DS18B20_WriteByte(uint8_t dat);static void DS18B20_SkipRom(void);static void DS18B20_MatchRom(void);/* 函数体 -*/* * 函数功能: * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */static void DS18B20_Delay(uint16_t time)uint8_t i; while(time) for (i = 0; i 10; i+) time-; /* * 函数功能: DS18B20 初始化函数 * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */uint8_t DS18B20_Init(void) DS18B20_Dout_GPIO_CLK_ENABLE(); DS18B20_Mode_Out_PP();DS18B20_Dout_HIGH();DS18B20_Rst(); return DS18B20_Presence ();/* * 函数功能: 使DS18B20-DATA引脚变为上拉输入模式 * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */static void DS18B20_Mode_IPU(void) GPIO_InitTypeDef GPIO_InitStruct; /* 串口外设功能GPIO配置 */ GPIO_InitStruct.Pin = DS18B20_Dout_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(DS18B20_Dout_PORT, &GPIO_InitStruct);/* * 函数功能: 使DS18B20-DATA引脚变为推挽输出模式 * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */static void DS18B20_Mode_Out_PP(void) GPIO_InitTypeDef GPIO_InitStruct; /* 串口外设功能GPIO配置 */ GPIO_InitStruct.Pin = DS18B20_Dout_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(DS18B20_Dout_PORT, &GPIO_InitStruct); /* * 函数功能: 主机给从机发送复位脉冲 * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */static void DS18B20_Rst(void)/* 主机设置为推挽输出 */DS18B20_Mode_Out_PP();DS18B20_Dout_LOW(); /* 主机至少产生480us的低电平复位信号 */DS18B20_Delay(750);/* 主机在产生复位信号后,需将总线拉高 */DS18B20_Dout_HIGH();/*从机接收到主机的复位信号后,会在1560us后给主机发一个存在脉冲*/DS18B20_Delay(15);/* * 函数功能: 检测从机给主机返回的存在脉冲 * 输入参数: 无 * 返 回 值: 0:成功,1:失败 * 说 明:无 */static uint8_t DS18B20_Presence(void)uint8_t pulse_time = 0;/* 主机设置为上拉输入 */DS18B20_Mode_IPU();/* 等待存在脉冲的到来,存在脉冲为一个60240us的低电平信号 * 如果存在脉冲没有来则做超时处理,从机接收到主机的复位信号后,会在1560us后给主机发一个存在脉冲 */while( DS18B20_Data_IN() & pulse_time=100 )return 1;elsepulse_time = 0;/* 存在脉冲到来,且存在的时间不能超过240us */while( !DS18B20_Data_IN() & pulse_time=240 )return 1;elsereturn 0;/* * 函数功能: 从DS18B20读取一个bit * 输入参数: 无 * 返 回 值: 读取到的数据 * 说 明:无 */static uint8_t DS18B20_ReadBit(void)uint8_t dat;/* 读0和读1的时间至少要大于60us */DS18B20_Mode_Out_PP();/* 读时间的起始:必须由主机产生 1us 15us 的低电平信号 */DS18B20_Dout_LOW();DS18B20_Delay(10);/* 设置成输入,释放总线,由外部上拉电阻将总线拉高 */DS18B20_Mode_IPU();/Delay_us(2);if( DS18B20_Data_IN() = SET )dat = 1;elsedat = 0;/* 这个延时参数请参考时序图 */DS18B20_Delay(45);return dat;/* * 函数功能: 从DS18B20读一个字节,低位先行 * 输入参数: 无 * 返 回 值: 读到的数据 * 说 明:无 */static uint8_t DS18B20_ReadByte(void)uint8_t i, j, dat = 0;for(i=0; i8; i+) j = DS18B20_ReadBit();dat = (dat) | (ji);return dat;/* * 函数功能: 写一个字节到DS18B20,低位先行 * 输入参数: dat:待写入数据 * 返 回 值: 无 * 说 明:无 */static void DS18B20_WriteByte(uint8_t dat)uint8_t i, testb;DS18B20_Mode_Out_PP();for( i=0; i1;/* 写0和写1的时间至少要大于60us */if (testb)DS18B20_Dout_LOW();/* 1us 这个延时 15us */DS18B20_Delay(8);DS18B20_Dout_HIGH();DS18B20_Delay(58);elseDS18B20_Dout_LOW();/* 60us Tx 0 120us */DS18B20_Delay(70);DS18B20_Dout_HIGH();/* 1us Trec(恢复时间) 正 1-负-|-整数-| * 高字节 | s | s | s | s | s | 26 | 25 | 24 | * * * 温度 = 符号位 + 整数 + 小数*0.0625 */* * 函数功能: 在跳过匹配 ROM 情况下获取 DS18B20 温度值 * 输入参数: 无 * 返 回 值: 温度值 * 说 明:无 */float DS18B20_GetTemp_SkipRom ( void )uint8_t tpmsb, tplsb;short s_tem;float f_tem;DS18B20_SkipRom ();DS18B20_WriteByte(0X44);/* 开始转换 */DS18B20_SkipRom (); DS18B20_WriteByte(0XBE);/* 读温度值 */tplsb = DS18B20_ReadByte(); tpmsb = DS18B20_ReadByte(); s_tem = tpmsb8;s_tem = s_tem | tplsb;if( s_tem 0 )/* 负温度 */f_tem = (s_tem+1) * 0.0625;elsef_tem = s_tem * 0.0625;return f_tem; /* * 函数功能: 在匹配 ROM 情况下获取 DS18B20 温度值 * 输入参数: ds18b20_id:用于存放 DS18B20 序列号的数组的首地址 * 返 回 值: 无 * 说 明:无 */void DS18B20_ReadId ( uint8_t * ds18b20_id )uint8_t uc;DS18B20_WriteByte(0x33); /读取序列号for ( uc = 0; uc 8; uc + ) ds18b20_id uc = DS18B20_ReadByte();/* * 函数功能: 在匹配 ROM 情况下获取 DS18B20 温度值 * 输入参数: ds18b20_id:存放 DS18B20 序列号的数组的首地址 * 返 回 值: 温度值 * 说 明:无 */float DS18B20_GetTemp_MatchRom ( uint8_t * ds18b20_id )uint8_t tpmsb, tplsb, i;short s_tem;float f_tem;DS18B20_MatchRom (); /匹配ROM for(i=0;i8;i+)DS18B20_WriteByte ( ds18b20_id i );DS18B20_WriteByte(0X4

温馨提示

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

评论

0/150

提交评论