嵌入式開發(fā)面試題及答案_第1頁
嵌入式開發(fā)面試題及答案_第2頁
嵌入式開發(fā)面試題及答案_第3頁
嵌入式開發(fā)面試題及答案_第4頁
嵌入式開發(fā)面試題及答案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式開發(fā)面試題及答案一、C語言基礎(chǔ)與嵌入式應用1.指針數(shù)組與數(shù)組指針的區(qū)別是什么?在嵌入式寄存器操作中如何應用?指針數(shù)組本質(zhì)是數(shù)組,數(shù)組元素均為指針類型,定義形式為`intarr[10]`,表示一個包含10個整型指針的數(shù)組;數(shù)組指針本質(zhì)是指針,指向一個數(shù)組,定義形式為`int(p)[10]`,表示p是指向包含10個整型元素數(shù)組的指針。在嵌入式開發(fā)中,寄存器通常以地址映射的形式操作,例如STM32的GPIO寄存器組是連續(xù)的內(nèi)存塊(如GPIOA的基地址為0x40020000),可通過數(shù)組指針指向該地址塊,實現(xiàn)批量操作。例如:`volatileuint32_t(GPIOx)[4]=(volatileuint32_t()[4])0x40020000;`此時`GPIOx[0]`對應MODER寄存器,`GPIOx[1]`對應OTYPER寄存器,通過數(shù)組指針可按索引訪問不同功能寄存器,提高代碼可讀性。2.嵌入式系統(tǒng)中如何檢測和避免內(nèi)存泄漏?檢測方法:(1)自定義內(nèi)存管理鉤子函數(shù),在malloc/free時記錄分配地址、大小及調(diào)用棧信息,運行中定期檢查未釋放的內(nèi)存;(2)使用工具如Valgrind(需交叉編譯支持)或嵌入式調(diào)試器的內(nèi)存斷點功能,監(jiān)測異常內(nèi)存訪問;(3)在關(guān)鍵任務(wù)后強制檢查堆內(nèi)存剩余量,若持續(xù)減少則可能存在泄漏。避免措施:(1)遵循“誰分配誰釋放”原則,優(yōu)先在函數(shù)內(nèi)分配并釋放;(2)使用靜態(tài)內(nèi)存替代動態(tài)分配(如環(huán)形緩沖區(qū));(3)對動態(tài)分配的內(nèi)存添加“哨兵值”(如在分配內(nèi)存前后寫入0xAA,釋放時檢查是否被修改,防止越界);(4)為malloc/free添加斷言,檢查返回值是否為NULL,避免操作空指針。3.預處理指令``和``的作用是什么?舉例說明在嵌入式驅(qū)動中的應用。``用于將宏參數(shù)轉(zhuǎn)換為字符串字面量,``用于連接兩個預處理標識符提供新的標識符。例如,在STM32的GPIO初始化中,可通過宏定義簡化不同端口的配置:`defineGPIO_PIN_CONFIG(port,pin)\do{\RCC->AHB1ENR|=RCC_AHB1ENR_portEN;\//連接port與EN提供如GPIOAENGPIOport->MODER|=(1<<(2pin));\//連接GPIO與port提供如GPIOA}while(0)`當調(diào)用`GPIO_PIN_CONFIG(A,5)`時,宏展開為:`RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN;``GPIOA->MODER|=(1<<10);`通過``動態(tài)提供寄存器名稱,避免為每個端口重復編寫代碼,提高可維護性。4.結(jié)構(gòu)體位域的作用是什么?使用時需要注意哪些平臺相關(guān)性問題?位域用于在結(jié)構(gòu)體中按位分配內(nèi)存,減少存儲空間占用,常見于寄存器描述(如狀態(tài)標志位)。例如:`structStatusReg{uint8_tflag1:1;//占1位uint8_tflag2:2;//占2位uint8_treserved:5;//保留5位};`注意問題:(1)位域類型(如uint8_t、uint16_t)決定了存儲單元的大小,不同平臺對齊方式可能導致位域跨存儲單元;(2)位域總寬度超過存儲單元大小時,會從下一個存儲單元開始分配;(3)位域的順序(大端/小端)由編譯器和硬件平臺決定,例如ARMCortex-M默認小端模式,位域的低有效位對應結(jié)構(gòu)體的低位;(4)位域不能取地址(&),因為其可能跨字節(jié)存儲,無法用指針直接訪問。二、ARM架構(gòu)與底層開發(fā)5.Cortex-M3與Cortex-M4的核心差異是什么?在實時控制場景中如何選擇?核心差異:(1)Cortex-M4集成了單精度浮點運算單元(FPU),支持ARMv7-M架構(gòu)的DSP指令(如乘加、飽和運算);Cortex-M3僅支持ARMv6-M架構(gòu),無FPU。(2)M4的NVIC(嵌套向量中斷控制器)支持更多中斷源(最多240個),且中斷延遲更低(12周期vsM3的12-14周期);(3)M4支持內(nèi)存保護單元(MPU)的增強版本,支持更多區(qū)域和子區(qū)域屏蔽。選擇依據(jù):若應用涉及浮點運算(如電機控制中的PID算法)或需要快速數(shù)字信號處理(如AD采樣后的FFT),優(yōu)先選擇M4;若僅需基礎(chǔ)控制(如GPIO、UART通信)且對成本敏感,M3更合適。例如,無刷電機控制器需實時計算電流環(huán)的浮點PID輸出,應選M4;而簡單的溫濕度采集模塊(僅處理整數(shù)運算)可選用M3降低BOM成本。6.NVIC中斷優(yōu)先級分組的作用是什么?如何配置搶占優(yōu)先級和子優(yōu)先級?NVIC通過優(yōu)先級分組將1個8位優(yōu)先級寄存器(實際使用4位,由PRIGROUP決定)劃分為搶占優(yōu)先級(PreemptPriority)和子優(yōu)先級(SubPriority)。搶占優(yōu)先級高的中斷可打斷低優(yōu)先級中斷的執(zhí)行;子優(yōu)先級僅在搶占優(yōu)先級相同時決定響應順序(不支持嵌套)。配置步驟:(1)通過`SCB->AIRCR`寄存器設(shè)置PRIGROUP字段(0-7,對應不同分組方式),例如`SCB->AIRCR=(0x5FA<<16)|(5<<8)`表示分組5(搶占優(yōu)先級4位,子優(yōu)先級0位);(2)使用`NVIC_SetPriority(IRQn,priority)`設(shè)置具體中斷的優(yōu)先級值,其中priority的高4位對應搶占優(yōu)先級(分組5時全部4位為搶占優(yōu)先級)。例如,在分組2(搶占2位,子2位)下,若設(shè)置UART中斷優(yōu)先級為0x30(二進制00110000),則搶占優(yōu)先級為0x03(3),子優(yōu)先級為0x00(0);若設(shè)置定時器中斷為0x21(00100001),則搶占優(yōu)先級0x02(2)低于UART的3,因此UART中斷可搶占定時器中斷。7.如何通過寄存器直接配置STM32的GPIO為推挽輸出模式?寫出關(guān)鍵寄存器的配置步驟。以STM32F103的PA5為例:(1)使能GPIOA時鐘:`RCC->APB2ENR|=RCC_APB2ENR_IOPAEN;`(APB2總線下的GPIOA時鐘使能)。(2)配置模式寄存器(GPIOx_MODER):PA5對應MODER[11:10]位,推挽輸出模式為“01”(通用輸出模式),因此`GPIOA->MODER&=~(3<<10);`(清除舊值),`GPIOA->MODER|=(1<<10);`(設(shè)置為01)。(3)配置輸出類型寄存器(GPIOx_OTYPER):推挽輸出對應OTYPER[5]位為0,因此`GPIOA->OTYPER&=~(1<<5);`。(4)配置輸出速度寄存器(GPIOx_OSPEEDR):假設(shè)設(shè)置為50MHz,PA5對應OSPEEDR[11:10]位為“11”,因此`GPIOA->OSPEEDR|=(3<<10);`。(5)配置上拉/下拉寄存器(GPIOx_PUPDR):若需要上拉,設(shè)置PUPDR[11:10]為“01”,即`GPIOA->PUPDR&=~(3<<10);`,`GPIOA->PUPDR|=(1<<10);`。8.ARM啟動文件的主要功能有哪些?簡述從復位到main函數(shù)的執(zhí)行流程。啟動文件(如startup_stm32f103xx.s)的核心功能:(1)定義中斷向量表(包含復位、NMI、硬件中斷等的入口地址);(2)初始化棧(Stack)和堆(Heap)的內(nèi)存空間;(3)處理程序從Flash到RAM的重定位(如初始化.data段,清零.bss段);(4)調(diào)用用戶main函數(shù)。執(zhí)行流程:(1)復位信號觸發(fā)后,CPU從向量表的0x00000000地址讀取棧頂指針(SP),設(shè)置主棧指針MSP;(2)從0x00000004地址讀取復位中斷服務(wù)程序(Reset_Handler)的入口地址,跳轉(zhuǎn)執(zhí)行;(3)Reset_Handler中完成以下操作:初始化堆和棧的指針;將Flash中已初始化的全局變量(.data段)復制到RAM對應位置;將未初始化的全局變量(.bss段)清零;(4)調(diào)用系統(tǒng)初始化函數(shù)(如SystemInit,配置時鐘);(5)最終跳轉(zhuǎn)到用戶main函數(shù),開始應用程序執(zhí)行。三、嵌入式操作系統(tǒng)(FreeRTOS)9.FreeRTOS的任務(wù)調(diào)度機制是怎樣的?同優(yōu)先級任務(wù)如何處理?FreeRTOS采用基于優(yōu)先級的搶占式調(diào)度,輔以時間片輪轉(zhuǎn)(僅用于同優(yōu)先級任務(wù))。每個任務(wù)有0(最低)到configMAX_PRIORITIES-1(最高)的優(yōu)先級,高優(yōu)先級任務(wù)可隨時搶占低優(yōu)先級任務(wù)的運行(除非低優(yōu)先級任務(wù)處于臨界區(qū))。同優(yōu)先級任務(wù)通過時間片輪轉(zhuǎn)調(diào)度:系統(tǒng)節(jié)拍中斷(SysTick)觸發(fā)時,若當前運行任務(wù)的時間片(由configTICK_RATE_HZ決定,默認1個時間片為1個SysTick周期)耗盡,則將其放入就緒列表尾部,切換到下一個同優(yōu)先級就緒任務(wù)。時間片輪轉(zhuǎn)避免了同優(yōu)先級任務(wù)長期占用CPU,適用于需要分時處理的非實時任務(wù)(如傳感器數(shù)據(jù)輪詢)。10.FreeRTOS的堆內(nèi)存管理有哪幾種方案?實際開發(fā)中如何選擇?FreeRTOS提供5種堆管理方案(heap_1到heap_5):(1)heap_1:僅支持pvPortMalloc,不支持vPortFree,內(nèi)存分配后不可釋放,適用于任務(wù)數(shù)量固定、內(nèi)存需求不變的場景(如簡單的傳感器采集系統(tǒng))。(2)heap_2:支持動態(tài)分配和釋放,但采用首次適應算法,可能產(chǎn)生內(nèi)存碎片(碎片無法合并),適用于分配/釋放大小相近的場景(如消息隊列的固定長度消息)。(3)heap_3:封裝標準庫的malloc/free,通過臨界區(qū)保護實現(xiàn)線程安全,依賴編譯器的malloc實現(xiàn),內(nèi)存管理效率可能受限于庫函數(shù)。(4)heap_4:支持碎片合并(通過雙向鏈表記錄空閑塊),采用最佳適應算法,適合需要頻繁分配/釋放不同大小內(nèi)存的場景(如HTTP客戶端動態(tài)分配接收緩沖區(qū))。(5)heap_5:支持非連續(xù)內(nèi)存塊(如片內(nèi)RAM+片外SDRAM),通過vPortDefineHeapRegions初始化多個內(nèi)存區(qū)域,適用于內(nèi)存分布分散的硬件平臺。選擇依據(jù):若系統(tǒng)內(nèi)存緊張且任務(wù)固定,選heap_1;若需動態(tài)分配但內(nèi)存碎片影響?。ㄈ绻潭ù笮》峙洌?,選heap_2;若需高效管理多大小內(nèi)存,選heap_4;若涉及多內(nèi)存區(qū)域,選heap_5。11.信號量(Semaphore)與互斥量(Mutex)的區(qū)別是什么?在資源保護中如何選擇?核心區(qū)別:(1)信號量用于資源計數(shù)(如緩沖區(qū)空閑空間),初始值可大于1;互斥量用于互斥訪問(如共享外設(shè)),初始值為1(二值信號量)。(2)互斥量支持優(yōu)先級繼承(PriorityInheritance),防止優(yōu)先級反轉(zhuǎn);信號量不支持。(3)互斥量必須由持有它的任務(wù)釋放;信號量可由任意任務(wù)/中斷釋放。選擇場景:(1)保護共享資源(如I2C總線)時,若存在低優(yōu)先級任務(wù)持有資源而高優(yōu)先級任務(wù)等待的情況,應使用互斥量(利用優(yōu)先級繼承避免死鎖);(2)同步任務(wù)與中斷(如中斷接收數(shù)據(jù)后通知任務(wù)處理),使用二值信號量(中斷中釋放,任務(wù)中獲?。?;(3)管理有限資源(如4個可用的ADC通道),使用計數(shù)信號量(初始值為4,任務(wù)獲取1個,釋放后歸還)。12.如何在FreeRTOS中保護臨界區(qū)?taskENTER_CRITICAL()與portDISABLE_INTERRUPTS()的區(qū)別是什么?保護臨界區(qū)的方法:(1)使用臨界區(qū)函數(shù)`taskENTER_CRITICAL()/taskEXIT_CRITICAL()`,通過關(guān)閉中斷并記錄嵌套次數(shù)實現(xiàn);(2)使用互斥量或二值信號量;(3)對于僅需短時間保護的代碼,直接操作PRIMASK寄存器關(guān)閉中斷。`taskENTER_CRITICAL()`與`portDISABLE_INTERRUPTS()`的區(qū)別:(1)`taskENTER_CRITICAL()`內(nèi)部調(diào)用`portDISABLE_INTERRUPTS()`關(guān)閉中斷,并維護一個嵌套計數(shù)器(xCriticalNesting),僅當嵌套計數(shù)器減至0時才重新使能中斷;(2)`portDISABLE_INTERRUPTS()`直接關(guān)閉中斷(設(shè)置PRIMASK=1),不處理嵌套,多次調(diào)用需多次使能,容易導致中斷狀態(tài)錯誤。因此,`taskENTER_CRITICAL()`更適合嵌套臨界區(qū)場景(如函數(shù)A調(diào)用函數(shù)B,兩者均需保護臨界區(qū))。四、硬件接口與驅(qū)動開發(fā)13.UART、I2C、SPI三種串行通信協(xié)議的主要區(qū)別是什么?在多從機場景中如何選擇?核心差異:(1)電氣層:UART是異步通信,僅需TX/RX兩根線(全雙工),無時鐘線;I2C是同步通信,使用SCL(時鐘)和SDA(數(shù)據(jù))兩根線(半雙工),支持多主多從;SPI是同步通信,使用SCK(時鐘)、MOSI(主發(fā)從收)、MISO(主收從發(fā))、NSS(片選)四根線(全雙工),支持單主多從。(2)協(xié)議層:UART通過起始位、數(shù)據(jù)位、校驗位、停止位同步,波特率需一致;I2C通過7位/10位從機地址尋址,通信中包含ACK/NACK信號;SPI通過NSS引腳拉低選中從機,無地址字段,通信速率更高(可達數(shù)十MHz)。多從機選擇:(1)若從機數(shù)量多且需節(jié)省引腳(如傳感器陣列),選I2C(兩線+地址);(2)若通信速率要求高(如LCD顯示、Flash讀寫),選SPI(全雙工+高速);(3)若僅需簡單的點對通信(如MCU與PC調(diào)試),選UART(無需同步時鐘)。14.ADC采樣時需要注意哪些問題?如何提高采樣精度?注意問題:(1)采樣保持時間:需確保ADC的采樣電容有足夠時間充電到輸入電壓,否則會導致量化誤差;(2)參考電壓穩(wěn)定性:外部參考電壓(VREF+)的波動直接影響轉(zhuǎn)換精度,需使用低噪聲、高精度的基準源(如LM4040);(3)輸入信號濾波:高頻噪聲會導致采樣值跳變,需在輸入端添加RC低通濾波器(如10kΩ電阻+100nF電容,截止頻率約160Hz);(4)通道切換延遲:多通道采樣時,切換通道后需等待轉(zhuǎn)換穩(wěn)定時間(如STM32的ADC通道切換需等待若干個ADCCLK周期)。提高精度的方法:(1)平均采樣:對同一信號多次采樣后取平均(如采樣16次取平均,可降低隨機噪聲影響);(2)軟件校準:在已知參考電壓下采樣,計算偏移誤差和增益誤差,動態(tài)修正采樣值;(3)減少PCB干擾:ADC輸入線與強干擾源(如開關(guān)電源)隔離,采用差分輸入(若支持);(4)合理選擇采樣率:采樣率需滿足奈奎斯特準則(至少2倍信號最高頻率),避免混疊。15.如何利用定時器實現(xiàn)PWM輸出?簡述STM32定時器的關(guān)鍵寄存器配置步驟。以STM32的通用定時器TIM3輸出通道1(PA6)的PWM為例:(1)使能TIM3和GPIOA時鐘:`RCC->APB1ENR|=RCC_APB1ENR_TIM3EN;`,`RCC->APB2ENR|=RCC_APB2ENR_IOPAEN;`。(2)配置PA6為復用推挽輸出:`GPIOA->MODER|=(2<<12);`(MODER[13:12]=10,復用模式),`GPIOA->AFR[0]|=(2<<24);`(AF2對應TIM3_CH1)。(3)配置定時器時基單元:設(shè)置預分頻器(PSC)和自動重裝載寄存器(ARR)。例如,系統(tǒng)時鐘72MHz,目標PWM頻率10kHz,則`PSC=72-1`(72MHz/72=1MHz),`ARR=100-1`(1MHz/100=10kHz)。(4)配置輸出比較寄存器(CCR1):設(shè)置占空比,如50%則`TIM3->CCR1=50;`。(5)配置輸出比較模式:設(shè)置CCMR1的OC1M位為“110”(PWM模式1,當計數(shù)器值<CCR1時輸出高電平),`TIM3->CCMR1|=(6<<4);`。(6)使能輸出:設(shè)置CCER的CC1E位為1(`TIM3->CCER|=1<<0`),使能定時器計數(shù)器(`TIM3->CR1|=TIM_CR1_CEN`)。五、調(diào)試與優(yōu)化16.JTAG與SWD調(diào)試接口的主要區(qū)別是什么?在嵌入式開發(fā)中如何選擇?區(qū)別:(1)引腳數(shù)量:JTAG需要TMS(模式選擇)、TCK(時鐘)、TDI(數(shù)據(jù)輸入)、TDO(數(shù)據(jù)輸出)、TRST(復位)共5線;SWD僅需SWDIO(數(shù)據(jù)/命令)和SWCLK(時鐘)2線。(2)通信協(xié)議:JTAG基于IEEE1149.1標準,采用移位寄存器方式傳輸數(shù)據(jù),支持邊界掃描;SWD是ARM定義的簡化協(xié)議,采用分組傳輸(Packet),通信效率更高(單周期可傳輸多個位)。(3)調(diào)試速度:SWD在相同時鐘下數(shù)據(jù)吞吐量更高(約為JTAG的4倍),且支持更深的斷點(如Cortex-M的6個硬件斷點)。選擇依據(jù):(1)若目標板引腳緊張(如可穿戴設(shè)備),選SWD(節(jié)省3個引腳);(2)若需邊界掃描測試(如驗證PCB焊接質(zhì)量),必須用JTAG;(3)對于Cortex-M系列MCU(如STM32、LPC),優(yōu)先選SWD(支持更廣泛且調(diào)試更高效)。17.嵌入式代碼優(yōu)化需要關(guān)注哪些方面?舉例說明空間優(yōu)化和時間優(yōu)化的具體方法。優(yōu)化方向:(1)代碼空間(ROM):減少全局變量、使用const修飾常量(存儲到Flash)、合并重復代碼(如將通用函數(shù)提取為庫);(2)運行時間(RAM/執(zhí)行速度):優(yōu)化循環(huán)結(jié)構(gòu)(減少嵌套)、使用內(nèi)聯(lián)函數(shù)(inline)、利用位運算替代乘除(如`x8`改為`x<<3`);(3)功耗:關(guān)閉空閑外設(shè)時鐘、使用低功耗模式(如STM32的停止模式)、優(yōu)化任務(wù)休眠時間。實例:(1)空間優(yōu)化:將多個功能相似的狀態(tài)機函數(shù)合并為一個帶參數(shù)的通用函數(shù),減少代碼重復;將大數(shù)組從全局變量改為函數(shù)內(nèi)靜態(tài)變量(若僅在函數(shù)內(nèi)使用),避免長期占用RAM。(2)時間優(yōu)化:在UART接收處理中,將查詢方式改為中斷方式,減少CPU輪詢時間;在PID計算中,用定點數(shù)運算替代浮點數(shù)(如將0.125轉(zhuǎn)換為1/8,用移位代替乘法)。18.如何排查嵌入式系統(tǒng)中的內(nèi)存溢出問題?常用工具有哪些?排查步驟:(1)復現(xiàn)問題:記錄溢出發(fā)生時的操作序列(如頻繁分配某類資源后崩潰);(2)靜態(tài)分析:使用工具(如PC-Lint)檢查數(shù)組越界、指針越界訪問;(3)動態(tài)監(jiān)測:在關(guān)鍵函數(shù)中插入日志(如記錄malloc/free的地址和大?。?,對比分配與釋放次數(shù);(4)調(diào)試器輔助:設(shè)置內(nèi)存斷點(如使用GDB的watch命令),當特定內(nèi)存地址被修改時觸發(fā)中斷,追蹤操作源。常用工具:(1)Valgrind(需交叉編譯):通過模擬CPU執(zhí)行,檢測內(nèi)存越界、泄漏;(2)J-LinkRTT(實時傳輸):在運行中通過調(diào)試器實時打印內(nèi)存使用情況;(3)自定義鉤子函數(shù):在malloc/free中添加斷言(如`assert(p!=NULL)`),并記錄調(diào)用棧(需編譯器支持);(4)硬件看門狗(IWDG):若系統(tǒng)因內(nèi)存溢出崩潰,看門狗復位后可結(jié)合復位日志定位問題模塊。六、項目經(jīng)驗與場景問題19.若在項目中遇到I2C通信偶爾失?。ㄈ鐝臋C無ACK),如何定位和解決?定位步驟:(1)示波器測量SCL/SDA波形,檢查是否存在信號畸變(如噪聲導致SDA在應答位未拉低);(2)查看從機手冊,確認通信時序(如SCL頻率是否超過從機最大支持值);(3)檢查I2C總線的上拉電阻(通常4.7kΩ-10kΩ),若電阻過大可能導致信號上升沿過慢;(4)驗證軟件邏輯:是否在發(fā)送地址后正確等待ACK,是否在錯誤時復位總線(如發(fā)送STOP條件后重新初始化)。解決方法:(1)添加硬件濾波:在SDA/SCL線上并聯(lián)100pF電容,抑制高頻噪聲;(2)降低I2C時鐘頻率(如從400kHz降至100kHz),適應低速從機;(3)軟件層面增加重試機制:檢測到NACK后,發(fā)送STOP條件并重新發(fā)送數(shù)據(jù)(最多3次);(4)檢查從機電源穩(wěn)定性:若從機供電電壓波動,可能導致內(nèi)部寄存器狀態(tài)異常,需添加去耦電容(如100nF并聯(lián)10μF)。20.開發(fā)一個溫濕度傳感器驅(qū)動(基于I2C

溫馨提示

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

評論

0/150

提交評論