版本协议

Public Domain

专业版
#第九届立创电赛#Gyq-温湿度检测仪

创建时间:1年前

177 0

描述

<p><div class="document"> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">注:<em> 为必填项</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="color: #0093e6;">请在报名阶段填写 &darr;</span></strong></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"></em> 1、项目功能介绍</h3> <hr class="horizontal-splitline normal-bold-2" /> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">该设计用于检测环境的温度和湿度。用SHT40高精度温湿度传感器模块,实现对温湿度的检测。</span></p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><em>2、项目属性</h3> <hr class="horizontal-splitline normal-bold-2" /> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">非原创,无获奖和答辩情况</span></p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"></em> 3、开源协议</h3> <hr class="horizontal-splitline normal-bold-2" /> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">Public Domain</span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <p style="line-height: 1.8;">&nbsp;</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="color: #0093e6;">请在竞赛阶段填写 &darr;</span></strong></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><em>4、硬件部分</h3> <hr class="horizontal-splitline normal-bold-2" /> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;">&nbsp;</p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"></em>5、软件部分</h3> <hr class="horizontal-splitline normal-bold-2" /> <p>/<em> USER CODE BEGIN Header </em>/<br />/<strong><br />&nbsp; <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>****</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><br />&nbsp; <em> @file &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : main.c<br />&nbsp; </em> @brief &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: Main program body<br />&nbsp; <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>**</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><br />&nbsp; <em> @attention<br />&nbsp; </em><br />&nbsp; <em> Copyright (c) 2024 STMicroelectronics.<br />&nbsp; </em> All rights reserved.<br />&nbsp; <em><br />&nbsp; </em> This software is licensed under terms that can be found in the LICENSE file<br />&nbsp; <em> in the root directory of this software component.<br />&nbsp; </em> If no LICENSE file comes with this software, it is provided AS-IS.<br />&nbsp; *<br />&nbsp; <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>**</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong><br />&nbsp; <em>/<br />/</em> USER CODE END Header <em>/<br />/</em> Includes ------------------------------------------------------------------<em>/<br />#include "main.h"<br />#include "adc.h"<br />#include "i2c.h"<br />#include "tim.h"<br />#include "gpio.h"</p> <p>/</em> Private includes ----------------------------------------------------------<em>/<br />/</em> USER CODE BEGIN Includes <em>/</p> <p>/</em> USER CODE END Includes <em>/</p> <p>/</em> Private typedef -----------------------------------------------------------<em>/<br />/</em> USER CODE BEGIN PTD <em>/</p> <p>/</em> USER CODE END PTD <em>/</p> <p>/</em> Private define ------------------------------------------------------------<em>/<br />/</em> USER CODE BEGIN PD <em>/</p> <p>/</em> USER CODE END PD <em>/</p> <p>/</em> Private macro -------------------------------------------------------------<em>/<br />/</em> USER CODE BEGIN PM <em>/</p> <p>/</em> USER CODE END PM <em>/</p> <p>/</em> Private variables ---------------------------------------------------------<em>/</p> <p>/</em> USER CODE BEGIN PV <em>/</p> <p>/</em> USER CODE END PV <em>/</p> <p>/</em> Private function prototypes -----------------------------------------------<em>/<br />void SystemClock_Config(void);<br />/</em> USER CODE BEGIN PFP <em>/</p> <p>/</em> USER CODE END PFP <em>/</p> <p>/</em> Private user code ---------------------------------------------------------<em>/<br />/</em> USER CODE BEGIN 0 <em>/<br />struct DEVICE_PARAMTER device_paramter = {0};<br />/</em> USER CODE END 0 */</p> <p>/<strong><br />&nbsp; <em> @brief &nbsp;The application entry point.<br />&nbsp; </em> @retval int<br />&nbsp; <em>/<br />int main(void)<br />{<br />&nbsp; /</em> USER CODE BEGIN 1 <em>/<br />&nbsp; &nbsp; float temperature = 0; &nbsp; &nbsp;<br />&nbsp; &nbsp; float humidity = 0;<br />&nbsp; /</em> USER CODE END 1 <em>/</p> <p>&nbsp; /</em> MCU Configuration--------------------------------------------------------<em>/</p> <p>&nbsp; /</em> Reset of all peripherals, Initializes the Flash interface and the Systick. <em>/<br />&nbsp; HAL_Init();</p> <p>&nbsp; /</em> USER CODE BEGIN Init <em>/</p> <p>&nbsp; /</em> USER CODE END Init <em>/</p> <p>&nbsp; /</em> Configure the system clock <em>/<br />&nbsp; SystemClock_Config();</p> <p>&nbsp; /</em> USER CODE BEGIN SysInit <em>/<br />&nbsp; &nbsp; HAL_DeInit();<br />&nbsp; /</em> USER CODE END SysInit <em>/</p> <p>&nbsp; /</em> Initialize all configured peripherals <em>/<br />&nbsp; MX_GPIO_Init(); &nbsp; &nbsp;<br />&nbsp; MX_ADC1_Init();<br />&nbsp; MX_I2C1_Init();<br />&nbsp; MX_TIM14_Init();<br />&nbsp; /</em> USER CODE BEGIN 2 <em>/<br />&nbsp; &nbsp; HAL_Delay(100);<br />&nbsp; SN74HC595_Send_Data(SN_DIG,0xFF); &nbsp; &nbsp; &nbsp; &nbsp;//&sup1;&Oslash;&plusmn;&Otilde;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Iuml;&Ocirc;&Ecirc;&frac34;<br />&nbsp; SN74HC595_Send_Data(SN_LED1,0x00);<br />&nbsp; SN74HC595_Send_Data(SN_LED2,0x00);<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; /</em> USER CODE END 2 <em>/<br />&nbsp; &nbsp; HAL_SuspendTick(); &nbsp; &nbsp;//&Ocirc;&Yacute;&Iacute;&pound;&micro;&Icirc;&acute;&eth;&para;&uml;&Ecirc;&plusmn;&AElig;&divide;&pound;&not;&middot;&Agrave;&Ouml;&sup1;&Iacute;&uml;&sup1;&yacute;&micro;&Icirc;&acute;&eth;&para;&uml;&Ecirc;&plusmn;&AElig;&divide;&Ouml;&ETH;&para;&Iuml;&raquo;&frac12;&ETH;&Ntilde;<br />&nbsp; &nbsp; HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); /</em> &Ouml;&acute;&ETH;&ETH;WFI&Ouml;&cedil;&Aacute;&icirc;, &frac12;&oslash;&Egrave;&euml;&Euml;&macr;&Atilde;&szlig;&Auml;&pound;&Ecirc;&frac12; <em>/<br />&nbsp; /</em> Infinite loop <em>/<br />&nbsp; /</em> USER CODE BEGIN WHILE <em>/<br />&nbsp; while (1)<br />&nbsp; {<br />&nbsp; &nbsp; /</em> USER CODE END WHILE <em>/</p> <p>&nbsp; &nbsp; /</em> USER CODE BEGIN 3 <em>/<br />&nbsp; &nbsp; &nbsp; &nbsp; if(device_paramter.KeyStatus == KEY_SHAKE_STATE)<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HAL_Delay(10);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5) == GPIO_PIN_RESET)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5) == GPIO_PIN_RESET);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SHT40_Read_RHData(&amp;temperature,&amp;humidity); &nbsp; &nbsp;//&para;&Aacute;&Egrave;&iexcl;&Icirc;&Acirc;&Ecirc;&ordf;&para;&Egrave;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; device_paramter.Temp = temperature </em> 10; &nbsp; &nbsp; &nbsp; &nbsp;//&middot;&Aring;&acute;&oacute;&Icirc;&Acirc;&Ecirc;&ordf;&para;&Egrave;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; device_paramter.Humi = humidity <em> 10;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HAL_TIM_Base_Start_IT(&amp;htim14); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&iquest;&ordf;&Ecirc;&frac14;&para;&uml;&Ecirc;&plusmn;&AElig;&divide;&pound;&not;&Iuml;&Ocirc;&Ecirc;&frac34;&Aacute;&frac12;&acute;&Icirc;&Ecirc;&yacute;&frac34;&Yacute;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; device_paramter.sleepStatus = 0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//&Ccedil;&aring;&sup3;&yacute;&ETH;&Yacute;&Atilde;&szlig;&plusmn;&ecirc;&Ouml;&frac34;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; device_paramter.KeyStatus = KEY_NO_PRESS; &nbsp; &nbsp; &nbsp; &nbsp;//&Ccedil;&aring;&sup3;&yacute;&deg;&acute;&Iuml;&Acirc;&plusmn;&ecirc;&Ouml;&frac34;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; else if(device_paramter.sleepStatus == 1) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//&Iuml;&Ocirc;&Ecirc;&frac34;&frac12;&aacute;&Ecirc;&oslash;&pound;&not;&frac12;&oslash;&Egrave;&euml;&ETH;&Yacute;&Atilde;&szlig;<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HAL_SuspendTick(); &nbsp; &nbsp;//&Ocirc;&Yacute;&Iacute;&pound;&micro;&Icirc;&acute;&eth;&para;&uml;&Ecirc;&plusmn;&AElig;&divide;&pound;&not;&middot;&Agrave;&Ouml;&sup1;&Iacute;&uml;&sup1;&yacute;&micro;&Icirc;&acute;&eth;&para;&uml;&Ecirc;&plusmn;&AElig;&divide;&Ouml;&ETH;&para;&Iuml;&raquo;&frac12;&ETH;&Ntilde;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); /</em> &Ouml;&acute;&ETH;&ETH;WFI&Ouml;&cedil;&Aacute;&icirc;, &frac12;&oslash;&Egrave;&euml;&Euml;&macr;&Atilde;&szlig;&Auml;&pound;&Ecirc;&frac12; <em>/<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; }<br />&nbsp; /</em> USER CODE END 3 */<br />}</p> <p>/*<em><br />&nbsp; </em> @brief System Clock Configuration<br />&nbsp; <em> @retval None<br />&nbsp; </em>/<br />void SystemClock_Config(void)<br />{<br />&nbsp; RCC_OscInitTypeDef RCC_OscInitStruct = {0};<br />&nbsp; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};</p> <p>&nbsp; /</strong> Configure the main internal regulator output voltage<br />&nbsp; */<br />&nbsp; HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);</p> <p>&nbsp; /<strong> Initializes the RCC Oscillators according to the specified parameters<br />&nbsp; <em> in the RCC_OscInitTypeDef structure.<br />&nbsp; </em>/<br />&nbsp; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;<br />&nbsp; RCC_OscInitStruct.HSIState = RCC_HSI_ON;<br />&nbsp; RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;<br />&nbsp; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;<br />&nbsp; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;<br />&nbsp; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;<br />&nbsp; RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;<br />&nbsp; RCC_OscInitStruct.PLL.PLLN = 8;<br />&nbsp; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;<br />&nbsp; RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;<br />&nbsp; if (HAL_RCC_OscConfig(&amp;RCC_OscInitStruct) != HAL_OK)<br />&nbsp; {<br />&nbsp; &nbsp; Error_Handler();<br />&nbsp; }</p> <p>&nbsp; /</strong> Initializes the CPU, AHB and APB buses clocks<br />&nbsp; <em>/<br />&nbsp; RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |RCC_CLOCKTYPE_PCLK1;<br />&nbsp; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;<br />&nbsp; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;<br />&nbsp; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;</p> <p>&nbsp; if (HAL_RCC_ClockConfig(&amp;RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)<br />&nbsp; {<br />&nbsp; &nbsp; Error_Handler();<br />&nbsp; }<br />}</p> <p>/</em> USER CODE BEGIN 4 <em>/</p> <p>/</em> USER CODE END 4 */</p> <p>/*<em><br />&nbsp; </em> @brief &nbsp;This function is executed in case of error occurrence.<br />&nbsp; <em> @retval None<br />&nbsp; </em>/<br />void Error_Handler(void)<br />{<br />&nbsp; /<em> USER CODE BEGIN Error_Handler_Debug </em>/<br />&nbsp; /<em> User can add his own implementation to report the HAL error return state </em>/<br />&nbsp; __disable_irq();<br />&nbsp; while (1)<br />&nbsp; {<br />&nbsp; }<br />&nbsp; /<em> USER CODE END Error_Handler_Debug </em>/<br />}</p> <p>#ifdef &nbsp;USE_FULL_ASSERT<br />/*<em><br />&nbsp; </em> @brief &nbsp;Reports the name of the source file and the source line number<br />&nbsp; <em> &nbsp; &nbsp; &nbsp; &nbsp; where the assert_param error has occurred.<br />&nbsp; </em> @param &nbsp;file: pointer to the source file name<br />&nbsp; <em> @param &nbsp;line: assert_param error line source number<br />&nbsp; </em> @retval None<br />&nbsp; <em>/<br />void assert_failed(uint8_t </em>file, uint32_t line)<br />{<br />&nbsp; /<em> USER CODE BEGIN 6 </em>/<br />&nbsp; /<em> User can add his own implementation to report the file name and line number,<br />&nbsp; &nbsp; &nbsp;ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) </em>/<br />&nbsp; /<em> USER CODE END 6 </em>/<br />}<br />#endif /<em> USE_FULL_ASSERT </em>/</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;">&nbsp;</p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><em>6、BOM清单</h3> <hr class="horizontal-splitline normal-bold-2" /> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"></em>7、大赛LOGO验证</h3> <hr class="horizontal-splitline normal-bold-2" /> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/703e112b0bc74b9da664b7ff8e620115.jpg" alt="" width="1162" height="737" /></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 8、演示您的项目并录制成视频上传</h3> <hr class="horizontal-splitline normal-bold-2" /> <p style="line-height: 1.8;">如附件所示</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14px;"><a href="/posts/de460543d4cf4dacb5f0326612455578" target="_blank" rel="noreferrer noopener">前往查看更多详情 ></a></span></p> <p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">&nbsp;</p> </div></p>

文档

BOM

暂无

附件

附件名 下载
立创电赛-温湿度检测仪-Gyq.mp4

成员

评论(0)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow