中斷程序的解釋_第1頁
中斷程序的解釋_第2頁
中斷程序的解釋_第3頁
中斷程序的解釋_第4頁
中斷程序的解釋_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、關(guān)于V2.0版本一在main函數(shù)中的定義hit maiii(void)Disableliitenupt; /關(guān)閉 CPU 總中斷 RC C_C onfigurationQ;GPIO_C onfiguiation();EXTI_Configuration();NVIC_Configuiation();Enablelnterrupt; 打開總中斷wlule(l)注意以下問題:(1)頭文件部分寫的是include main.h”在niaiii.h中定義了#ifhdef_MAIN_H#define MAIN H#iiiclude#endif以上關(guān)于_MAIN_H的宏定義,是為了防止多個重名頭文件存在。

2、在myfiin.h”對應(yīng) myfiin.c 文件里面定義了#iiiclude ”stni32fl0 x_confh”#iiiclude Hcortexin3_niacro.hn#iiiclude ”stni32fl0 x_libhdefine LED 1_ONGPIO_ResetBits(GPIOD, GPIO_Pin_2)/控制的是 PD2define LED_OFFGPIO_SetBits(GPIOD. GPIO_Pm_2)#define Disableliitenupt_SETPRIMASK()#define EnableliitemiptRESETPRIMASKQvoid DelayM

3、s(vu32 nms);void DelayUs(vu32 nus);#endif其中,LED 1_ON和LEDLOFF對應(yīng)于一個GPIO的位操作。對應(yīng)書上P101頁的函數(shù)定義。 兩個延遲函數(shù),放在了 myftin.co很好理解。延遲函數(shù)是自己做的。然而在myfiin.h中還是 做了很多定義。GPIO用到的頭文件。關(guān)于時鐘的初始化配置 void RCC_Coiifiguiation(void);內(nèi)容void RCC_Coiifiguiation(void) _ _EnorStatus HSEStaitUpStatus; /HSE起振狀態(tài)0表示出錯,其他的表示成果SUCCESS RCC.Deli

4、utO;RCC_HSEConfig(RCC_HSE_ON);HSE StaitUp Statu s = RCC_WaitForHSEStaitUp();/若選擇HSE做系統(tǒng)時鐘:先調(diào)用RCC_HSEConfig()使能HSE ,后調(diào)用 /RCC.WaitForHSEStartUp ()函數(shù)等待 HSE 起震,最后調(diào)用 RCC_GetFlagStatus()函數(shù)獲取 HSE 晶振狀態(tài)if(HSEStailUpStatus = SUCCESS)FLASH_PrefetchBufferCmd(FLASH_PrefetcliBuffei_Enable);/使能 Flash 半周期訪問 FLASH_Se

5、tLatency(FLASH_Latency_2);/設(shè)置 FLASH 存儲器延時周期數(shù) RCC_HCLKConfig(RCC_SYSCLK_Divl);設(shè)置 AHB 時鐘 RCC_PCLK2Config(RCC_HCLK_Divl);/設(shè)置 APB2 時鐘RCC.PCLKlConfig(RCC_HCLK_Div2);設(shè)置 APB1 時鐘 RCC_PLLConfig(RCC_PLLSouice_HSE_Divl, RCC_PLLMul_9); 設(shè)置鎖相環(huán)的倍頻 RCC_PLLCmd(ENABLE); 使能鎖相環(huán) while(RCC_GetFlagStanis(RCC_FLAG_PLLRDY)

6、= RESET)/等待 PLL 就緒 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/設(shè)置系統(tǒng)時鐘為 PLL 時鐘 while(RCC_GetSYSCLKSourceO != 0 x08)/確認(rèn)系統(tǒng)時鐘是否為 PLL 時鐘 其中,EnorStatus 在 stni32fl0 x_type.h 中定義typedef enum (ERROR = 0, SUCCESS = !ERROR EnorStatus;RCC_DeImtQ; 在stni32f!0 x_rcc.c中定義。表示復(fù)位RCC時鐘到默認(rèn)的配置。 void RCC_DeInit(void) /* Se

7、t HSION bit */RCC-CR |=(1132)0 x00000001;/* Reset SWl:0. HPRE3:0, PPRE12:O, PPRE22:0. ADCPRE1:0 and MCO2:0 bits */ RCC-CFGR &= (u32)0 xF8FF0000;/* Reset HSEON, CSSON and PLLON bits / RCC-CR &= (u32)0 xFEF6FFFF;/* Reset HSEBYP bit /RCC-CR &= (u32)0 xFFFBFFFF;/* Reset PLLSRC, PLLXTPRE. PLLMUL3:0 and U

8、SBPRE bits */ RCC-CFGR &= (u32)0 xFF80FFFF;/* Disable all iiitenupts */ RCC-CIR = 0 x00000000;RCC_HSEConfig(RCC_HSE_ON); /表示配置 external lugh speed oscillator 外部高速振蕩源FLASH_PrefetchBuffeiCmd(FLASH_PrefetchBuffei_Enable);在 stm32fl0 x_flash.c 中定義FLASH_SetLatency(FLASH_Latency_2);在 stni32f!0 x_flash.c 中定

9、義Stm32fl0 x_rcc.c 中定義了如下RCC_HCLKConfig(RCC_SYSCLK_Divl);RCC_PCLK2Config(RCC_HCLK_Divl);RCC.PCLKl Config(RCC_HCLK_Div2);RCC_PLLConfig(RCC_PLLSouice_HSE_Divl, RCC_PLLMul_9);RCC_PLLCmd(ENABLE);RCC_GetFlagStatus(RCC_FLAG_PLLRDY);RCC_SYSCLKConfig(RCC_SYSCLKSourcjPLLCLK);RCC_GetS Y SCLKSourceQ;在#include “

10、stm32fl0 x_lib.h”中己經(jīng)把stm32f 10 x_rcc.h加進(jìn)去了。所以可以正常使用。關(guān)于GPIO的配置。根據(jù)我們的電路圖,按鍵接PA15, LED接PD2void GPIO_Configuiation(void)GPIO.IiutTypeDef GPIO.InitStnictuie; 定義一個 GPIOIiutTypeDef 類型的結(jié)構(gòu)體RCC_APB2PenphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Penph_GPIOD. ENABLE);/KEY PA15GPIO_ImtStnicture.GPIO_Pm = GPIO_Pin_15

11、;GPIO.IiutStnicUire.GPIO_Mode = GPIO_Mode_IPU;配置為上拉輸入模式GPIO.IiutStnicUire.GPIO_Speed = GPIO.Speed_50MHz; /GPIO 速度定義為 50MHz GPIO_Imt(GPIOA, &GPIO_IiiitStiiictuie);/ LED 配置 PD2 LED1GPIO_ImtStRicture.GPIO_Pm = GPIO_Pin_2;GPIO.IiutStnicUire.GPIO_Mode = GPIO_Mode_Out_PP;/配置為通用推挽輸出模式GPIO_IiutStmcture.GPIO

12、_Speed = GPIO_Speed_50MHz;GPIO_Imt(GPIOD, &GPIO_IiiitStiuctuie);GPIO_SetBits(GPIOD, GPIO_Pin_2); /置位為高電平GPIO_ImtTypeDef GPIO.nutStnictuie;定義一個 GPIOLutTypeDef 類型的結(jié)構(gòu)體,該結(jié)構(gòu)體在sun32fl0 x_gpio.li中,里面聲明了枚舉。分別為速度定義和模式定義。typedef stmctu!6 GPIO_Pin;GPIOSpeedTypeDef GPIO_Speed:GPIOMode.TypeDef GPIO.Mode;GPIO_nii

13、tTypeDef;typedef enumGPIO_Speed_10MHz = 1,GPIO_Speed_2MHz,GPIO_Speed_50MHz )GPIOSpeed_TypeDef;typedef enum( GPIO_Mod jAIN = 0 x0,GPIO Mode IN FLOATING = 0 x04,GPIO Mode IPD = 0 x28,GPIO Mode IPU = 0 x48, GPIO_Mode_Out_OD = 0 x14, GPIO_Mode_Out_PP = 0 x10, GPIO Mode AF OD = 0 xlC, GPIO_Mode_AF_PP = 0

14、 x18 )GPIOMode_TypeDef;按鍵的輸入,為什么要定義為上拉輸入?而不是浮空輸入?與外部電路有關(guān)?KEYKEYOKEYOKEY1KEY!我們中斷觸發(fā)方式用的是下降沿觸發(fā),要保證出現(xiàn)下降沿,所以就配置為上拉輸入,保持高 電平輸入,按鍵按下就出現(xiàn)一個下降沿,觸發(fā)中斷。浮空輸入就不能出現(xiàn)下降沿。LED的輸出定義為高速的推挽輸出GPIO的初始化對應(yīng)的函數(shù),都是在sun32f!0 x_gpio.c中。關(guān)于EXTI的配置。void EXTLConfiguration(void) EXTI_ImtTypeDef EXTI_InitStnicniie;/,KEY PA15EXTLCleaiIT

15、PendmgBit(EXTLLine 15);清除 LINE 15 上的中斷標(biāo)志位GPIO.EXTILmeConfig(GPIO_PoitSourceGPIOA,GPIO_PinSource 15);選擇中斷管腳EXTI.IiutStnictuie.EXTLLme = EXTI_Lmel5; 選擇中斷線路 EXTI.IiutStnicture.EXTLMode = EXTI.Mode.Iiiternipt; 中斷模式 EXTI_IiiitStnictuie.EXTLTnggei = EXTLTiiggei_Falling; 中斷觸發(fā)方式,卜降沿觸發(fā) EXTI.IiutStnictuie.EXT

16、LLmeCmd = ENABLE;中斷線路使能EXTI_Iiiit(&EXTI_ImtStiicnue);關(guān)于 EXTLIiiitTypeDef 的結(jié)構(gòu)體在 stm32fl0 x_exti.h 中定義typedef stmct u32 EXTI.Lme;EXTIMode.TypeDef EXTI.Mode;EXTITrigger_TypeDef EXTI_Tngger;FunctionalState EXTI_LineCmd;EXTIJiiitTypeDef;其中,EXTIMode_lpeDef為定義事件模式還是中斷模式的枚舉 typedef enum EXTI_Mode_Inteiiupt

17、= 0 x00, EXTLMode.Event = 0 x04 EXTIMode_TypeDef;EXTITrigger_lpeDef觸發(fā)類型的定義。有3種,上升沿,下降沿,上升下降沿。 typedef enum EXTI_Trigger_Rising = 0 x08,EXTI_Trigger_Fallmg = OxOC,EXTI_Trigger_Rising_Fallmg = 0 x10EXTITngger_TypeDef;EXTI_ClearITPendingBit(EXTI_Linel5);關(guān)于此函數(shù).在stm32fl0 x_exti.c中。void EXTI_ClearlTPend m

18、gBit(u 3 2 EXTI_Line)/* Check the parameters */assert_param(IS_EXTI_LINE(EXTI_Line);EXTLPR = EXTI_Lme;輸入?yún)?shù)為EXTLLine,完成的功能是EXTLPR = EXTI.Lme;在這里EXTI的結(jié)構(gòu)體的定義在stm3210 x_maph中。typedef stmctvu32 IMR;vu32 EMR:vu32 RTSR;vu32 FTSR;vu32 SWIER:vu32 PR:z EXTI.TypeDef;對應(yīng)于書上123頁的寄存器中的最后一個。功能為掛起,和清零的區(qū)別?在表6-4中關(guān)于 EX

19、TI.PR的解釋是,用用保存中斷停件。PR:掛起寄存器。當(dāng)外部中斷線上發(fā)生了選擇的邊沿事件,該寄存器的對應(yīng)位會被置為1。0,表示對應(yīng)線上沒有發(fā)生觸發(fā)請求。通過向該寄存器的對應(yīng)位寫入1可以清除該位。在中 斷服務(wù)函數(shù)里面經(jīng)常會要向該寄存器的對應(yīng)位寫1來清除中斷請求。還有,EXTI-PR = EXTIJLine;是對寄存器的寫操作。在 stm32flOxexti. h 中,定義 為#如2比。EXTIJ.inel5(u32) 0 x08000)相當(dāng)于將數(shù)0 x08000賦給了 PR寄存器。還有,EXTLPR = EXTLLme;是對寄存器的一種什么操作?在 ,定義 為#define EXTI_Line

20、 15(u32)0 x08000)相當(dāng)于將數(shù)0 x08000賦給了 PR寄存器很重要的一點,書上解釋,使用EXTI-ClearlTPendingBit函數(shù)清除中斷標(biāo)志位。進(jìn)入中斷服務(wù)程序后,首先要做的就是清除中斷標(biāo)志位,否則它不會不斷響應(yīng)中斷,不斷進(jìn)入中斷 函數(shù)(P126)。引出了一個問題。掛起和清除是一樣的嗎?從函數(shù)的英文上看,是clear pending,理解為 清除掛起。關(guān)于 GPIO_EXTILineConfig 的詳細(xì)內(nèi)容在 stm32fl0 x_gpio.c 中.其 description 為:selects the GPIO pin used as EXTI Line.選擇GPI

21、O引腳作為EXTI的輸入線。內(nèi)部是對AFIO寄 存器進(jìn)行操作,本寄存器的定義在_map.h。屬于外設(shè)寄存器。void GPIO_EXTILineConfig(u8 GPIO_PortSouice, u8 GPIO_PmSource) u32 tinp = 0 x00;/* Check the parameters */asseiVpaiam(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PoitSource);asseiVpaiam(IS_GPIO_PIN_SOURCE(GPIO_PmSource);tmp = (u32)0 x0F) (0 x04 * (GPIO_PmSourc

22、e & (u8)0 x03);AFIO-EXTICRGPIO_PmSoiuce 0 x02 &=tmp;AFIO-EXTICRGPIO_PmSouice 0 x02 |= (u32)GPIO_PortSource) (0 x04 * (GPIO_PinSource & (u8)0 x03);本程序中用了 GPIO_EXTILmeConfig(GPIO_PoitSouiceGPIOA,GPIO_PmSourcel5);define GPIO_PortSourceGPIOA (u8)0 x00)/在_gpio.h 中定義的#define GPIO_PmSource 15(u8)0 x0F) 在點p

23、io.h 中定義的EXTI_Init(&EXTI_InitStructure);在設(shè)置完EXTI的參數(shù)之后,用了初始化函數(shù)。此函數(shù)在stm32fl0 x_exti.c中。(5)關(guān)于NVIC寄存器的配置void NnC_Configuiation(void)NVIC_ImtTypeDefNVIC_InitStructure;設(shè)置中斷向量表的入口NVIC.SetVectoiTableCNVIC.VectTab.FLASH. 0 x0);NVIC_PiioiityGroupConfig(NVIC_PrioiitVTOR = NVIC.VectTab | (Offset & (u32)0 xlFFFF

24、F80);/在 stm32fl0 x_nvic.c 中,void NHC_PriorityGroupConfig(u 3 2 NVIC_PiioiitAIRCR = AIRCR_VECTKEY_MASK NVIC.PnontyGroup;其中,擇define AIRCR_VECTKEY_MASK(u32)0 x05FA0000) 也是在 stm32fl0 x_nvic.c中#define NVIC_PrioiityGioup_2(i】32)0 x500) /* 2 bits for pre-emption priority/為stni32flOX_nvic.h文件中。這兩個合起來給SCB的AI

25、RCR寄存器。與課本上pill頁說的 一樣。#define EXTI 15_10_IRQChannel(u8)0 x28) /* External Line15:10 Interrupts*/ 在 stm32f!0 x_nvic.h 中。開總中斷和關(guān)總中斷書上用的是:void NVIC_SETPRIMASK(void)_SETPRIMASK();void NHC_RESETPRIMASK(void)_RESETPRIMASKO;本例題中,直接定義了#define Disablelntenupt_SETPRIMASK()#define EnableliitemiptRESETPRIMASKQ更容

26、易理解。_SETPRIMASK()卜劃線如何解釋? 一個下劃線表示私有,兩個表示系統(tǒng)默認(rèn)的。這兩個函數(shù)是在coitexin3_macio.s中實現(xiàn)的 是匯編函數(shù);192193194195196197Function Name:_RE5EIERIMASKDescxipcicn:Assemblerfunction to resec the ERIMASK.Input:NoneReeurn:Mone_RE 5ETPRItASKCP3IE iBX r4202203204205206207;Function Name;Descripoicn;Input;Return:SETPRI1-IASK:Assem

27、ble i rune Lion lo ssl che ?RI1BRR = GPIO.Pm;(2)沒有關(guān)于RCC的任何定義。因為在啟動文件startup_stm32fl0 x_mds文件中,在 131行_main之后,有一個Systemlnit的定義。對系統(tǒng)進(jìn)行了初始化。函數(shù)內(nèi)容在 systeni_stm32fl0 x.c文件下,對RCC時鐘和FLASH, PLL都做了定義。默認(rèn)采用的是外 部時鐘源,8MHz時鐘,9倍頻為主時鐘。void Systeniliut (void)/* Reset the RCC clock configuiation to the default reset sta

28、te(fbr debug purpose) */ /* Set HSION bit */RCC-CR |= (umt32_t)0 x00000001;/* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits /#ifiidef STM32F10X_CLRCC-CFGR &= (umt32_t)0 xF8FF0000;#elseRCC-CFGR &= (umt32_t)0 xF0FF0000;#endif/* STM32F10X.CL */* Reset HSEON, CSSON and PLLON bits */RCC-CR &= (uint32

29、_t)0 xFEF6FFFF;/* Reset HSEBYP bit */RCC-CR &= (uint32_t)0 xFFFBFFFF;/* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ RCC-CFGR &= (umt32_t)0 xFF80FFFF;#ifdefSTM32F10XCL/* Reset PLL2ON and PLL3ON bits /RCC-CR &= (uint32_t)0 xEBFFFFFF;/* Disable all intenupts and clear pending bits */RCC-

30、CIR = OxOOFFOOOO;/* Reset CFGR2 register */RCC-CFGR2 = 0 x00000000;#elif defined (STM32F10X_LD_VL) | defined (STM32F10X_MD_VL) | (defined STM32F10X_HD_VL)/* Disable all intenupts and clear pending bits */RCC-CIR = 0 x009F0000;/* Reset CFGR2 register */RCC-CFGR2 = 0 x00000000;#else/* Disable all inte

31、nupts and clear pending bits */RCC-CIR = 0 x009F0000;#endif/* STM32F10X.CL */#if defined (STM32F10X_HD) | (defined STM32F10X.XL) | (definedSTM32F10X_HD_VL)#ifdef DATA_IN_ExtSRAMSystemInit_ExtMemC tlQ;#endif/* DATA_IN_ExtSRAM /#endif/* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 piesc

32、alers */* Configure the Flash Latency cycles and enable prefetch buffer */ SetSysClockQ;SCB-VTOR = SRAM BASE I VECT TAB OFFSET; /* Vector Table Relocation in Internal SRANI. */#elseSCB-VTOR = FLASH BASE I VECT TAB OFFSET; /* Vector Table Relocation in Internal FLASH. */#endif(3) GPIO的初始化配置void GPIO_

33、Configuration(void)GPIO_IiiitTypeDef GPIO_ImtStiiictuie;RCC-APB2PenphClockCmd(RCC.APB2Penph_GPIOA|RCC_APB2Penph_GPIOD, ENABLE);/7KEY1 PA15GPIO_IiiitStnicture.GPIO_Pm = GPIO_Pin_15;GPIO_ImtStructure.GPIO_Mode = GPIO_Mode_IPU;配置為上拉輸入模式GPIO_InitStmcture.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Imt(GPIOA, &GP

34、IO_IiiitStmetui e);/LED 配置 PD2 LED1GPIO_IiiitStnicture.GPIO_Pm = GPIO_Pin_2;GPIO.ImtStnicture.GPIOMode = GPIO_Mode_Out_PP;配置為通用推挽輸出模式GPIO_InitStmcture.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Imt(GPIOD, &GPIO_IiiitStnictuie);GPIO_SetBits(GPIOD, GPIO_Pin_2);GPIO的程序與2.0版本相同。由于GPIO屬于APB2,要對APB2的時鐘做一個 配置。使能AP

35、B2時鐘。STM32為多時鐘源,不用的時鐘默認(rèn)是關(guān)閉的,這樣保 證了低功耗。RCC_APB2PenphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Penph_GPIOD, ENABLE);定義在 stm32fl0 x_rcc.c 下。GPIOJnitTypeDef的定義位置與2.0版本相同。都在stm32fl0 x_gpio.h中。3, GPIO_Init(GPIOA, &GPIO_InitStructure);定義在 stm32fl0 x_gpio.c 中。與 2.0 版本相同。PR = EXTI_Lme; 在 stni32f!0 x.h 中。 typedef

36、 stmct IO umt32 t IMR;IO umt32 t EMR;IO umt32 t RTSR:_IO umt32_t FTSR;IO umt32 tSWIER;IO umt32 t PR; EXTLTypeDef;其他類似,GPIO_EXTILineConfig()函數(shù)在 stm32fl0 x_gpio.c 中,AFIO 寄存器 的定義在stm3210 x.li中。typedef stiuctIO umt32 t EVCR:IO umt32 tMAPR:_IO umt32_t EXTICR4;umt32_t RESERVED。;IO umt32 tMAPR2;) AFIO_Type

37、Def;在stm3210 x.h中的1406行,做了結(jié)構(gòu)體的聲明。define AFIO(AFIO_TypeDef *) AFIO_BASE)所以在函數(shù)中就直接寫的AFIO-EXTICRvoid GPIO_EXTILineCoiifig(uint8_t GPIO_PoitSource, uint8_t GPIO_PmSouice)umt32_t Unp = 0 x00;/* Check the parameters */asseiVpaiam(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PoitSource);asseiVpaiam(IS_GPIO_PIN_SOURCE(GPI

38、O_PmSouice);tmp = (i】int32_t)0 x0F) (0 x04 * (GPIO_PmSource & (uint8_t)0 x03);AFIO-EXTICRGPIO_PmSource 0 x02 &= tmp;AFIO-EXTICRGPIO_PmSource 0 x02 |= (umt32_t)GPIO_PoitSource) (0 x04* (GPIO.PmSouice & (uint8_t)0 x03);(4)關(guān)于NVIC的配置,2.0和3.5區(qū)別較大void NHC_Configuration(void)NVIC_IiiitTypeDef NVIC_IiiitStiiictuie;設(shè)置中斷向量表的入口地址,7NVIC_Set歡ctoiTable(NVIC_VbctTab_FLASH, 0 x0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論