




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)四一、實(shí)驗(yàn)題目:利用ADSPBF533-EZ-KIT板的硬件資源,完成對(duì)信號(hào)的采樣和濾波分析。二、實(shí)驗(yàn)?zāi)康模杭由顚?duì)數(shù)字濾波這種信號(hào)處理的方法的理解。三、實(shí)驗(yàn)設(shè)備:信號(hào)源、EZ-KIT板、微機(jī)、示波器等。四、實(shí)驗(yàn)內(nèi)容:本實(shí)驗(yàn)中提供的基本FIR濾波器程序,初始化不同的FIR濾波器的系數(shù)來(lái)設(shè)計(jì)出不同的濾波器。利用調(diào)試器的繪圖(plot)功能來(lái)顯示有關(guān)數(shù)據(jù)的波形;五、實(shí)驗(yàn)原理:對(duì)信號(hào)加漢明窗可改善信號(hào)的質(zhì)量,主瓣寬,頻率分辨率較低,旁瓣也較低。對(duì)濾波器進(jìn)行時(shí)域壓縮,頻域便會(huì)展寬。對(duì)濾波器進(jìn)行移位,使低通變成了帶通。本實(shí)驗(yàn)為了觀察這幾種變化的輸出結(jié)果的不同。六、實(shí)驗(yàn)步驟:1)連接硬件關(guān)閉PC機(jī)的電源
2、,按照硬件連接圖正確連接各個(gè)硬件設(shè)備,檢查EZ-KIT板上的跳線位置是否正確,按照硬件連接圖檢查確保正確連接各個(gè)硬件設(shè)備。2)加電和啟動(dòng)程序檢查無(wú)誤后,分別打開(kāi)PC機(jī)、信號(hào)源、評(píng)估板和示波器的電源,運(yùn)行VisualDSP+,新建一個(gè)工程,工程名稱自定義,正確設(shè)置工程的各個(gè)選項(xiàng),將 test3 fir目錄下的源文件加入到工程中?;蛘叽蜷_(kāi) test3 FIR目錄下已經(jīng)存在的工程FIR.dpj。3)選擇或者建立正確的會(huì)話類型按照要求選擇或者建立EZ-KIT類型的會(huì)話,詳細(xì)要求請(qǐng)參閱7.4.1節(jié)的有關(guān)內(nèi)容。4) 編譯鏈接和觀察結(jié)果編譯鏈接該工程,沒(méi)有錯(cuò)誤后運(yùn)行程序。必須注意在Settings菜單中有幾
3、項(xiàng)必須正確設(shè)置,設(shè)置和運(yùn)行EZ_KIT板方法請(qǐng)7.4.1節(jié)的有關(guān)內(nèi)容。正確的設(shè)置Settings后,才可以從示波器上看到輸出結(jié)果。5)改變信號(hào)類型觀察調(diào)節(jié)信號(hào)發(fā)生器,利用示波器監(jiān)視其輸出幅度為0.51Vpp,分別產(chǎn)生正弦波、方波和三角波,使其頻率從直流到采樣頻率連續(xù)地變化,觀察示波器上輸出信號(hào)幅度和波形的變化。6)修改源程序改變?yōu)V波狀態(tài)觀察將源程序中的window=0 修改為:window=1,然后再重復(fù)步驟4),5),記錄典型點(diǎn)的信號(hào)幅度數(shù)據(jù),描繪濾波器幅頻特性。將源程序中的Shift=0改為Shift=1,然后再重復(fù)步驟4),5),記錄典型點(diǎn)的信號(hào)幅度數(shù)據(jù),描繪濾波器幅頻特性。將源程序中的
4、Compress=0改為Compress=1,然后再重復(fù)步驟4),5),記錄典型點(diǎn)的信號(hào)幅度數(shù)據(jù),描繪濾波器幅頻特性。window=1表明加了漢明窗Compress=1 表明對(duì)原濾波器進(jìn)行了時(shí)域壓縮。Shift=1 表明對(duì)原濾波器進(jìn)行了移位,低通變?yōu)榱藥ā?、 主要源代碼:1)程序結(jié)構(gòu):程序包括主函數(shù)main()、Process_data()、Initialize()和ISR()等4個(gè)模塊,以及常數(shù)和宏定義、全局變量定義部分。其中main()函數(shù)完成程序的控制,Initialize()完成CODEC和BF533個(gè)部分的初始化,Process_data ()完成數(shù)據(jù)采集和計(jì)算,ISR()實(shí)現(xiàn)中
5、斷控制。2)程序工作流程:main()先調(diào)用Initialize()完成對(duì)CODEC、BF533以及FIR濾波器系數(shù)初始化,再調(diào)用ISR()運(yùn)行中斷服務(wù)程序,在中斷服務(wù)程序中,調(diào)用子函數(shù)Process_data ()完成對(duì)信號(hào)的采集、濾波和輸出,Process_data ()的運(yùn)行模式是:采樣>FIR運(yùn)算>輸出>采樣>的無(wú)限循環(huán)。3)數(shù)據(jù)源選擇:變量Process_Stat為采集狀態(tài)標(biāo)志位,若Process_Stat=0,則從CODEC取采樣數(shù)據(jù)存入Inbuf0;Process_Stat=1,則從CODEC取采樣數(shù)據(jù)存入Inbuf1;Process_Stat=2,則對(duì)I
6、nbuf中的數(shù)據(jù)進(jìn)行濾波,然后輸出。4)濾波類型:通過(guò)濾波器類型變量filter=1,設(shè)定濾波類型為低通。濾波器的參數(shù)都放在數(shù)組變量hFIR_TAPS中。數(shù)據(jù)經(jīng)過(guò)FIR濾波器后,才送往示波器。實(shí)驗(yàn)五的程序位于test3 fir子目錄,打開(kāi)工程文件FIR.DPJ,可以看到演示軟件包括以下幾個(gè)程序模塊:talkthouth.h#ifndef _Talkthrough_DEFINED#define _Talkthrough_DEFINED/-/ Header files/-/#include <sysexception.h>#include <cdefBF533.h>#inc
7、lude <fract.h>#include <filter.h>/-/ Symbolic constants/-/ addresses for Port B in Flash A#define pFlashA_PortA_Dir(volatile unsigned char *)0x20270006#define pFlashA_PortA_Data(volatile unsigned char *)0x20270004/ names for codec registers, used for sCodec1836TxRegs#define DAC_CONTROL_1
8、0x0000#define DAC_CONTROL_20x1000#define DAC_VOLUME_00x2000#define DAC_VOLUME_10x3000#define DAC_VOLUME_20x4000#define DAC_VOLUME_30x5000#define DAC_VOLUME_40x6000#define DAC_VOLUME_50x7000#define ADC_0_PEAK_LEVEL0x8000#define ADC_1_PEAK_LEVEL0x9000#define ADC_2_PEAK_LEVEL0xA000#define ADC_3_PEAK_LE
9、VEL0xB000#define ADC_CONTROL_10xC000#define ADC_CONTROL_20xD000#define ADC_CONTROL_30xE000/ names for slots in ad1836 audio frame#define INTERNAL_ADC_L00#define INTERNAL_ADC_R02#define INTERNAL_DAC_L00#define INTERNAL_DAC_R02#define INTERNAL_ADC_L11#define INTERNAL_ADC_R13#define INTERNAL_DAC_L11#de
10、fine INTERNAL_DAC_R13/ size of array sCodec1836TxRegs#define CODEC_1836_REGS_LENGTH11/ SPI transfer mode#define TIMOD_DMA_TX 0x0003/ SPORT0 word length#define SLEN_240x0017/ DMA flow mode#define FLOW_10x1000/#define FIR_TAPS 256/#define BUF_FIRST 0#define BUF_SECOND 1#define BUF_FILTER 2/-/ Global v
11、ariables/-/extern int iChannel0LeftIn;extern int iChannel0RightIn;extern int iChannel0LeftOut;extern int iChannel0RightOut;extern int iChannel1LeftIn;extern int iChannel1RightIn;extern int iChannel1LeftOut;extern int iChannel1RightOut;extern volatile short sCodec1836TxRegs;extern volatile int iRxBuf
12、fer1;extern volatile int iTxBuffer1;extern fract16 coeffs;extern fract16 delay;extern fir_state_fr16 state;extern short int Process_Stat;extern int OutBufCnt;/-/ Prototypes/-/ in file Initialize.cvoid Init_EBIU(void);void Init_Flash(void);void Init1836(void);void Init_Sport0(void);void Init_DMA(void
13、);void Init_Interrupts(void);void InitCoeffs(void);void Init_ProcessData(void);void Enable_DMA_Sport(void);/ in file Process_data.cvoid Process_Data(void);/ in file ISRs.cEX_INTERRUPT_HANDLER(Sport0_RX_ISR);#endif /_Talkthrough_DEFINEDmain.c#include "Talkthrough.h"#include "sysreg.h&q
14、uot;#include "ccblkfn.h"#include <fract.h>/-/ Variables/ Description:The variables iChannelxLeftIn and iChannelxRightIn contain /the data coming from the codec AD1836. The (processed)/playback data are written into the variables /iChannelxLeftOut and iChannelxRightOut respectively, w
15、hich /are then sent back to the codec in the SPORT0 ISR. /The values in the array iCodec1836TxRegs can be modified to /set up the codec in different configurations according to /the AD1885 data sheet./-/ left input data from ad1836int iChannel0LeftIn, iChannel1LeftIn;/ right input data from ad1836in
16、t iChannel0RightIn, iChannel1RightIn;/ left ouput data for ad1836int iChannel0LeftOut, iChannel1LeftOut;/ right ouput data for ad1836int iChannel0RightOut, iChannel1RightOut;/ array for registers to configure the ad1836/ names are defined in "Talkthrough.h"volatile short sCodec1836TxRegsCO
17、DEC_1836_REGS_LENGTH =DAC_CONTROL_1| 0x000,DAC_CONTROL_2| 0x000,DAC_VOLUME_0| 0x3ff,DAC_VOLUME_1| 0x3ff,DAC_VOLUME_2| 0x3ff,DAC_VOLUME_3| 0x3ff,DAC_VOLUME_4| 0x000,DAC_VOLUME_5| 0x000,ADC_CONTROL_1| 0x000,ADC_CONTROL_2| 0x000,ADC_CONTROL_3| 0x000;/ SPORT0 DMA transmit buffervolatile int iTxBuffer14;
18、/ SPORT0 DMA receive buffervolatile int iRxBuffer14;/-/ Function:main/ Description:After calling a few initalization routines, main() just /waits in a loop forever. The code to process the incoming /data can be placed in the function Process_Data() in the /file "Process_Data.c"./-/void mai
19、n(void)sysreg_write(reg_SYSCFG, 0x32);/Initialize System Configuration RegisterInit_EBIU();Init_Flash();Init1836();InitCoeffs();Init_ProcessData();Init_Sport0();Init_DMA();Init_Interrupts();Enable_DMA_Sport0();while(1);Initialize.c#include "Talkthrough.h"#include <filter.h>fir_state_
20、fr16 state;/-/ Function:Init_EBIU/ Description:This function initializes and enables asynchronous memory /banks in External Bus Interface Unit so that Flash A can be /accessed./-/void Init_EBIU(void)*pEBIU_AMBCTL0= 0x7bb07bb0;*pEBIU_AMBCTL1= 0x7bb07bb0;*pEBIU_AMGCTL= 0x000f;/-/ Function:Init_Flash/
21、Description:This function initializes pin direction of Port A in Flash A/to output. The AD1836_RESET on the ADSP-BF533 EZ-KIT board /is connected to Port A./-/void Init_Flash(void)*pFlashA_PortA_Dir = 0x3;/-/ Function:Init1836()/ Description:This function sets up the SPI port to configure the AD1836
22、. /The content of the array sCodec1836TxRegs is sent to the /codec./-/void Init1836(void)int i;int j;static unsigned char ucActive_LED = 0x01;/ write to Port A to reset AD1836*pFlashA_PortA_Data = 0x00;/ write to Port A to enable AD1836*pFlashA_PortA_Data = ucActive_LED;/ wait to recover from resetf
23、or (i=0; i<0xf000; i+);/ Enable PF4*pSPI_FLG = FLS4;/ Set baud rate SCK = HCLK/(2*SPIBAUD) SCK = 2MHz*pSPI_BAUD = 16;/ configure spi port/ SPI DMA write, 16-bit data, MSB first, SPI Master*pSPI_CTL = TIMOD_DMA_TX | SIZE | MSTR;/ Set up DMA5 to transmit/ Map DMA5 to SPI*pDMA5_PERIPHERAL_MAP= 0x500
24、0;/ Configure DMA5/ 16-bit transfers*pDMA5_CONFIG = WDSIZE_16;/ Start address of data buffer*pDMA5_START_ADDR = sCodec1836TxRegs;/ DMA inner loop count*pDMA5_X_COUNT = CODEC_1836_REGS_LENGTH;/ Inner loop address increment*pDMA5_X_MODIFY = 2;/ enable DMAs*pDMA5_CONFIG = (*pDMA5_CONFIG | DMAEN);/ enab
25、le spi*pSPI_CTL = (*pSPI_CTL | SPE);/ wait until dma transfers for spi are finished for (j=0; j<0xaff; j+);/ disable spi*pSPI_CTL = 0x0000;/-/ Function:Init_Sport0/ Description:Configure Sport0 for I2S mode, to transmit/receive data /to/from the AD1836. Configure Sport for external clocks and /fr
26、ame syncs./-/void Init_Sport0(void)/ Sport0 receive configuration/ External CLK, External Frame sync, MSB first, Active Low/ 24-bit data, Stereo frame sync enable*pSPORT0_RCR1 = RFSR | LRFS | RCKFE;*pSPORT0_RCR2 = SLEN_24 | RXSE | RSFSE;/ Sport0 transmit configuration/ External CLK, External Frame s
27、ync, MSB first, Active Low/ 24-bit data, Secondary side enable, Stereo frame sync enable*pSPORT0_TCR1 = TFSR | LTFS | TCKFE;*pSPORT0_TCR2 = SLEN_24 | TXSE | TSFSE;/-/ Function:Init_DMA/ Description:Initialize DMA1 in autobuffer mode to receive and DMA2 in/autobuffer mode to transmit/-/void Init_DMA(
28、void)/ Set up DMA1 to receive/ Map DMA1 to Sport0 RX*pDMA1_PERIPHERAL_MAP = 0x1000;/ Configure DMA1/ 32-bit transfers, Interrupt on completion, Autobuffer mode*pDMA1_CONFIG = WNR | WDSIZE_32 | DI_EN | FLOW_1;/ Start address of data buffer*pDMA1_START_ADDR = iRxBuffer1;/ DMA inner loop count*pDMA1_X_
29、COUNT = 4;/ Inner loop address increment*pDMA1_X_MODIFY = 4;/ Set up DMA2 to transmit/ Map DMA2 to Sport0 TX*pDMA2_PERIPHERAL_MAP = 0x2000;/ Configure DMA2/ 32-bit transfers, Autobuffer mode*pDMA2_CONFIG = WDSIZE_32 | FLOW_1;/ Start address of data buffer*pDMA2_START_ADDR = iTxBuffer1;/ DMA inner lo
30、op count*pDMA2_X_COUNT = 4;/ Inner loop address increment*pDMA2_X_MODIFY = 4;/-/ Function:Enable_DMA_Sport/ Description:Enable DMA1, DMA2, Sport0 TX and Sport0 RX/-/void Enable_DMA_Sport0(void)/ enable DMAs*pDMA2_CONFIG= (*pDMA2_CONFIG | DMAEN);*pDMA1_CONFIG= (*pDMA1_CONFIG | DMAEN);/ enable Sport0
31、TX and RX*pSPORT0_TCR1 = (*pSPORT0_TCR1 | TSPEN);*pSPORT0_RCR1 = (*pSPORT0_RCR1 | RSPEN);/-/ Function:Init_Interrupts/ Description:Initialize Interrupt for Sport0 RX/-/void Init_Interrupts(void)/ Set Sport0 RX (DMA1) interrupt priority to 2 = IVG9 *pSIC_IAR0 = 0xffffffff;*pSIC_IAR1 = 0xffffff2f;*pSI
32、C_IAR2 = 0xffffffff;/ assign ISRs to interrupt vectors/ Sport0 RX ISR -> IVG 9register_handler(ik_ivg9, Sport0_RX_ISR);/ enable Sport0 RX interrupt*pSIC_IMASK = 0x00000200;/-/ Function:Init_ProcessData/ Description:Initialize Process Data for FIR/-/void Init_ProcessData(void)int i;Process_Stat=BU
33、F_FIRST;OutBufCnt=0;fir_init(state, coeffs, delay, FIR_TAPS,1);ISR.c#include "Talkthrough.h"EX_INTERRUPT_HANDLER(Sport0_RX_ISR)/ confirm interrupt handling*pDMA1_IRQ_STATUS = 0x0001;/ copy input data from dma input buffer into variablesiChannel0LeftIn = iRxBuffer1INTERNAL_ADC_L0;iChannel0R
34、ightIn = iRxBuffer1INTERNAL_ADC_R0;iChannel1LeftIn = iRxBuffer1INTERNAL_ADC_L1;iChannel1RightIn = iRxBuffer1INTERNAL_ADC_R1;/ call function that contains user codeProcess_Data();/ copy processed data from variables into dma output bufferiTxBuffer1INTERNAL_DAC_L0 = iChannel0LeftOut;iTxBuffer1INTERNAL
35、_DAC_R0 = iChannel0RightOut;iTxBuffer1INTERNAL_DAC_L1 = iChannel1LeftOut;iTxBuffer1INTERNAL_DAC_R1 = iChannel1RightOut;Process_data.c#include "Talkthrough.h"#include <filter.h>#include <fract.h>#include <math.h>#include <complex.h>#define PI3.1415926#define FC2 0.05
36、/以采樣率Fs進(jìn)行歸一化的高頻截止頻率#define FC1 0.00/以采樣率Fs進(jìn)行歸一化的低頻截止頻率#define FL0.2/移位量#define COEFFSCALE 20000/濾波器系數(shù)整型標(biāo)尺/#define RESULT_SIZE 256/short int Process_Stat; int OutBufCnt;int Window;/加窗標(biāo)志float WFIR_TAPS;/窗函數(shù)int Shift;/頻域移位標(biāo)志int Compress;/時(shí)域壓縮標(biāo)志int hFIR_TAPS;/最終設(shè)計(jì)的濾波器沖擊響應(yīng)fract16 delayFIR_TAPS;fract16 co
37、effsFIR_TAPS;fract16 Inbuf2;fract16 Outbuf2;int FirOutCnt;short int FirResultBufRESULT_SIZE;/-/ Function:Init_Coeffs/ Description:Initialize Process Data for FIR/-/void InitCoeffs(void)int i;float hdFIR_TAPS;/理想低通濾波器的沖擊響應(yīng)float cosineFIR_TAPS;/移位因子Window=0;Shift=0;Compress=0;/testFirOutCnt=0;/*初始化濾波器
38、系數(shù)*/濾波器系數(shù)產(chǎn)生/ for(i=0;i<(FIR_TAPS-1)/2;i+) hdi=(1/PI)*(sin(2*FC2*PI*(i-(FIR_TAPS-1)/2)-sin(2*FC1*PI*(i-(FIR_TAPS-1)/2)/(i-(FIR_TAPS-1)/2); for(i=(FIR_TAPS-1)/2+1;i<FIR_TAPS;i+) hdi=(1/PI)*(sin(2*FC2*PI*(i-(FIR_TAPS-1)/2)-sin(2*FC1*PI*(i-(FIR_TAPS-1)/2)/(i-(FIR_TAPS-1)/2);hd(FIR_TAPS-1)/2=2*(FC2
39、-FC1);/時(shí)域截取/for(i=0;i<FIR_TAPS;i+) hi=(int)(hdi*COEFFSCALE);/時(shí)域加窗/if(Window)for(i=0;i<FIR_TAPS;i+)Wi=0.54-0.46*cos(2*PI*i/(FIR_TAPS-1); for(i=0;i<FIR_TAPS;i+)hi=(int)(float)hi*Wi);/時(shí)域壓縮系數(shù)/if(Compress)for (i=0;i<FIR_TAPS/2;i+) hdi=hi*2;for (i=0;i<FIR_TAPS/2;i+) hi=hdi;for (i=FIR_TAPS/2
40、;i<FIR_TAPS;i+) hi=0;/序列右邊填零/移位FL*fs/if(Shift) for (i=0;i<FIR_TAPS;i+)cosinei=cos(2*PI*i*FL);for(i=0;i<FIR_TAPS;i+) hi=(int)(float)hi*cosinei);for(i=0;i<FIR_TAPS;i+)coeffsi=hi;/-/ Function:Process_Data()/ Description: This function is called from inside the SPORT0 ISR every /time a complete audio frame has been received. The new /input samples can be found in the variables iChannel0LeftIn,/iChannel0RightIn, iChannel1LeftIn and iChannel1Right
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家用電器檢測(cè)行業(yè)發(fā)展?jié)摿︻A(yù)測(cè)及投資策略研究報(bào)告
- 2025-2030年中國(guó)報(bào)進(jìn)警器項(xiàng)目投資可行性研究分析報(bào)告
- 中國(guó)鐵路建設(shè)市場(chǎng)全面調(diào)研及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 4《路程時(shí)間與速度》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)人教版
- 2025K歌APP行業(yè)市場(chǎng)分析報(bào)告
- 2025年汽車頂襯項(xiàng)目可行性研究報(bào)告
- 2025年變速箱主體裝飾罩行業(yè)深度研究分析報(bào)告
- 快樂(lè)讀書吧:讀讀童話故事 教學(xué)設(shè)計(jì)-2024-2025學(xué)年語(yǔ)文二年級(jí)上冊(cè)統(tǒng)編版
- 面膜采購(gòu)合同范本
- 2025年中國(guó)網(wǎng)站建設(shè)行業(yè)發(fā)展?jié)摿︻A(yù)測(cè)及投資戰(zhàn)略研究報(bào)告
- 售電公司與電力用戶委托交易代理合同
- 基礎(chǔ)護(hù)理學(xué)試題及答案(各章節(jié))-基礎(chǔ)護(hù)理學(xué)第四版試題及答案
- 色彩發(fā)展的歷史課件
- 學(xué)生成長(zhǎng)導(dǎo)師制工作手冊(cè)
- (2023年最新版)醫(yī)師執(zhí)業(yè)、變更執(zhí)業(yè)、多機(jī)構(gòu)備案申請(qǐng)審核表
- 醫(yī)療器械臨床試驗(yàn)質(zhì)量管理規(guī)范培訓(xùn)課件
- 建設(shè)工程工程量清單計(jì)價(jià)標(biāo)準(zhǔn)(2022)
- 小學(xué)道德與法治五年級(jí)下冊(cè)全冊(cè)優(yōu)質(zhì)教案(含課件和素材)
- 施耐德公司品牌戰(zhàn)略
- 三方聯(lián)測(cè)測(cè)量記錄表
- 啦啦操社團(tuán)教學(xué)計(jì)劃(共3頁(yè))
評(píng)論
0/150
提交評(píng)論