ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:33.51KB ,
资源ID:3934887      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3934887.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(郑州大学信息工程学院DSP大作业参考.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

郑州大学信息工程学院DSP大作业参考.docx

1、郑州大学信息工程学院DSP大作业参考1.C语言事项矩阵相乘:#include #includevoid matrix(int *b,int *c, int *a, int nx, int ny, int nk);int main()int i,j,k,tmp;int b_row,b_col;int c_row,c_col;int a_row,a_col;int *b,*c,*a;printf(输入B矩阵的行数 列数以及C矩阵的列数n);scanf(%d %d,&b_row,&b_col,&c_col);c_row = b_col;a_row = b_row;a_col = c_col;a =

2、(int *) malloc(sizeof(int *) * a_row);for (j=0;ja_row;j+)aj = (int *) malloc(sizeof(int) * a_col);b = (int *) malloc(sizeof(int *) * b_row);for (j=0;jb_row;j+)bj = (int *) malloc(sizeof(int) * b_col);c = (int *) malloc(sizeof(int *) * c_row);for (j=0;jc_row;j+)cj = (int *) malloc(sizeof(int) * c_col

3、);if (!cc_row-1) printf(no enought memoryn);exit(0);printf(输入B阵元素%d%dn,b_row,b_col);for (j=0;jb_row;j+)for (i=0;ib_col;i+)scanf(%d,&tmp);bji = tmp;printf(输入C阵元素%d%dn,c_row,c_col);for (j=0;jc_row;j+)for (i=0;ic_col;i+)scanf(%d,&tmp);cji = tmp;matrix( b ,c,a, a_col, a_row, b_col);for(j=0;ja_row;j+)for

4、 (i=0;ia_col;i+) printf(%d ,aji);printf(n);system(PAUSE); return 0; void matrix(int *b,int *c, int *a, int nx, int ny, int nk)int i,j,k;for (j=0;jny;j+)for(i=0;inx;i+)aji= 0;for(j=0;jny;j+)for(i=0;inx;i+)for(k=0;knk;k+)aji+= bjk*cki;2. C语言实现FFT:#include#include#includetypedef std:complex complex;int

5、 N=16,N1=4; /N为总输入数,N1为总级数int r=0;complex a64,b64;/a64为每一级蝶形算法输入,b64为每一级蝶形算法的输出const double pi=3.141592653589793; int reverse_order(int N,int a) /倒序算法 N为总级数(带入N1) int c20,res=0; for(int i=N-1;i=0;i-) if(a%2=0) ci=0; else ci=1; a=a/2; res+=ci*pow(2,i); return res ;void butterfly(int layer) complex w;

6、 int c1=pow(2,N1-layer); /本级包含基本蝶形算法的次数 int c2=pow(2,layer-1); /本级蝶形算法包含的次数 int c3=pow(2,layer); for(int i=0;ic1;i+) for(int j=0;jc2;j+) r=j*pow(2,N1-layer); w=complex(cos(2*pi*r/N),-sin(2*pi*r/N); bj+i*c3=aj+i*c3+aj+c2+i*c3*w; bj+c2+i*c3=aj+i*c3-aj+c2+i*c3*w; for(int k=0;kN;k+) ak=bk; void fft() in

7、t i; for(i=0;iN1;i+) butterfly(i+1); void main() int i; double num164=1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0; /输入 double num264; double res; for(i=0;iN;i+) /倒序 num2i=num1reverse_order(N1,i); for(i=0;iN;i+) /初始化 ai=complex(num2i,0); fft(); for(i=0;iN;i+) res=sqrt(ai.real()*ai.real()+ai.imag()*ai.imag(); pri

8、ntf(%ft,X); 3.看门狗软件实现方法:#include #include unsigned int i,num; unsigned char temp;void delay(unsigned int t); int main() num=0; P1=(0x00); TMOD=0x10; TL1=0xB0; TH1=0x3C; ET1=1; EA=1; TF1=0; TR1=1; temp=0x01; for(i=0;i8;i+) P0=temp; delay(100); temp=1; TR1=0; TL1=0xB0; TH1=0x3C; TF1=0; TR1=1; while(1)

9、 temp=0x80; for(i=0;i=1; TR1=0; TL1=0xB0; TH1=0x3C; TF1=0; TR1=1; num=0; return 0;void delay(unsigned int t) register unsigned int bt; for(;t;t-) for(bt=0;bt255;bt+); void int_T1() interrupt 3 using 3 num+; if (num=100) P1=(0x01); 看门狗硬件实现电路:作业:1. 结合实例说明“实时性”与“仿真”的概念。“实时性”是指信号的输入、运算和输出都要在一定的时间内完成,并根据

10、生产过程工况及现场情况变化及时进行处理。而实时系统指在事件或数据产生的同时,能够在规定的时间内给予响应,以足够快的速度处理,及时地将处理结果送往目的地的一种处理系统。例如时钟信号能够准确的定时,各处的时钟能够达到一致,在不同的场合需要达到ns级、s级。“仿真”是应用电子计算机对系统的结构、功能和行为以及参与系统控制的人的思维过程和行为进行动态性比较逼真的模仿。2. 汇编语言实现浮点数相乘:include io32.inc .data msg1 byte 请输入第一个数字,13,10,0 msg2 byte 请输入第二个数字,13,10,0 readbuf1 byte 256 dup(0) re

11、adbuf2 byte 256 dup(0)num byte 00h .codestart: xor ecx,ecx xor ebx,ebx mov eax,offset msg1 call dispmsg mov eax,offset readbuf1 call readmsg mov edx,eax push edx mov esi,offset readbuf1 cmp byte ptr esi,- jz again3again1: cmp byte ptr esi,. jnz again2 push ecx inc esi dec edxagain2: inc ecx mov al,e

12、si sub al,30h imul ebx,10 movzx eax,al add ebx,eax dec edx inc esi cmp edx,00H jnz again1 jmp done1again3: inc esi inc num dec edx jmp again1done1: push ebx pop ebx pop ecx pop edx sub edx,ecx dec edx push ebx push edx xor ecx,ecx xor ebx,ebx mov eax,offset msg2 call dispmsg mov eax,offset readbuf2

13、call readmsg mov edx,eax push edx mov esi,offset readbuf2 cmp byte ptr esi,- jz again6again4: cmp byte ptr esi,. jnz again5 push ecx inc esi dec edxagain5: inc ecx mov al,esi sub al,30h imul ebx,10 movzx eax,al add ebx,eax dec edx inc esi cmp edx,00H jnz again4 jmp done2again6: inc esi inc num dec e

14、dx jmp again4done2: push ebx pop ebx pop ecx pop edx sub edx,ecx dec edx pop ecx pop eax add ecx,edx imul eax,ebx mov ebx,1done3: imul ebx,10 dec ecx cmp ecx,0 jnz done3 mov edx,0 div ebx call dispuid mov eax,. call dispc mov eax,edx call dispuid exit 0end start 3. 实现F2812的硬件看门狗设计:#include DSP281x_D

15、evice.h #include DSP281x_Examples.h interrupt void wakeint_isr(void); Uint32 WakeCount;Uint32 LoopCount;void main(void) InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; EALLOW; PieVectTable.WAKEINT = &wakeint_isr; EDIS; WakeCount = 0; LoopCount = 0; EALLOW; SysCtrlRegs.SCSR = BIT1; ED

16、IS; PieCtrlRegs.PIECRTL.bit.ENPIE = 1; PieCtrlRegs.PIEIER1.bit.INTx8 = 1; IER |= M_INT1; EINT; KickDog( ); EALLOW; SysCtrlRegs.WDCR = 0x0028; EDIS; for(;) LoopCount+; interrupt void wakeint_isr(void) WakeCount+; PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; 4.pc与单片机的串口通信#include#includevoiddelay1ms()unsig

17、nedinti;for(i=500000;i0;i-);/延时Initial_com()TMOD=0x20;/定时器T1PCON&=0xef;SCON=0x50;TH1=0xfd;/波特率设置为9600TL1=0xfd;TR1=1;/开定时器T1运行控制位main()Initial_com();while(1)SBUF=c;while(!TI);delay1ms();delay1ms();TI=0;主程序代码:#includeunsignedcharbutter;voidsend();voidreceive();voidmain()PCON=0x80;SCON=0Xd0;TMOD=0X20;T

18、H1=0Xfd;TL1=0Xfd;TR1=1;TI=1;while(1);receive();send();voidsend()if(TI=1)SBUF=1;TI=0;voidreceive()if(RI=1)ACC=SBUF;butter=ACC;RI=0;4 51串口通信#includemain() unsigned char dat; TMOD=0x20; TH1=TL1=0xfd; SCON=0x50; TR1=1; while(1) if(RI)/接收 RI=0; dat=SBUF; SBUF=dat;/发送 while(!TI); TI=0; 2、中断方式:#includeunsi

19、gned char dat;bit flag;void uart_isr() interrupt 4 if(RI)/接收 RI=0; dat=SBUF; flag=1; if(TI)TI=0;main() TMOD=0x20; TH1=TL1=0xfd; SCON=0x50; TR1=1; EA=1; ES=1; flag=0; while(1) if(flag) SBUF=dat; flag=0; 5. 实现F2812片内外设eCan的功能:#include DSP281x_Device.h /头文件#include DSP281x_Examples.h /函数声明void mailbox_

20、check(int32 T1, int32 T2, int32 T3);void mailbox_read(int16 i);/全局变量Uint32 ErrorCount;Uint32 MessageReceivedCount;Uint32 TestMbox1 = 0;Uint32 TestMbox2 = 0;Uint32 TestMbox3 = 0;/主函数void main(void) Uint16 j; struct ECAN_REGS ECanaShadow; /步骤1.初始化系统控制(PLL, 看门狗,使能外设时钟) InitSysCtrl(); /步骤2.初始化 GPIO /Ini

21、tGpio(); /本例中略过 /步骤3.清除所有中断并初始化PIE向量表 DINT; /禁止 CPU 所有中断 /初始化 PIE 控制寄存器组. /InitPieCtrl(); /本例中略过 /禁止CPU所有中断并清除所有中断标志位 IER = 0x0000; IFR = 0x0000; /InitPieVectTable(); /本例中略过 /步骤4.初始化所有外设 /InitPeripherals(); /本例中不需要 /步骤5.用户程序段 MessageReceivedCount = 0; ErrorCount = 0; InitPieCtrl();/初始化PIE中断 InitPieV

22、ectTable;/初始化PIE中断矢量表 InitECan(); /初始化eCAN /可以一次向邮箱写16位或32位数据 /向发送邮箱MBOX015写入MSGID(ID号) ECanaMboxes.MBOX0.MSGID.all = 0x9555AAA0; ECanaMboxes.MBOX1.MSGID.all = 0x9555AAA1; ECanaMboxes.MBOX2.MSGID.all = 0x9555AAA2; ECanaMboxes.MBOX3.MSGID.all = 0x9555AAA3; ECanaMboxes.MBOX4.MSGID.all = 0x9555AAA4; EC

23、anaMboxes.MBOX5.MSGID.all = 0x9555AAA5; ECanaMboxes.MBOX6.MSGID.all = 0x9555AAA6; ECanaMboxes.MBOX7.MSGID.all = 0x9555AAA7; ECanaMboxes.MBOX8.MSGID.all = 0x9555AAA8; ECanaMboxes.MBOX9.MSGID.all = 0x9555AAA9; ECanaMboxes.MBOX10.MSGID.all = 0x9555AAAA; ECanaMboxes.MBOX11.MSGID.all = 0x9555AAAB; ECanaM

24、boxes.MBOX12.MSGID.all = 0x9555AAAC; ECanaMboxes.MBOX13.MSGID.all = 0x9555AAAD; ECanaMboxes.MBOX14.MSGID.all = 0x9555AAAE; ECanaMboxes.MBOX15.MSGID.all = 0x9555AAAF; /向接收邮箱 MBOX1631写入MSGID(ID号) ECanaMboxes.MBOX16.MSGID.all = 0x9555AAA0; ECanaMboxes.MBOX17.MSGID.all = 0x9555AAA1; ECanaMboxes.MBOX18.M

25、SGID.all = 0x9555AAA2; ECanaMboxes.MBOX19.MSGID.all = 0x9555AAA3; ECanaMboxes.MBOX20.MSGID.all = 0x9555AAA4; ECanaMboxes.MBOX21.MSGID.all = 0x9555AAA5; ECanaMboxes.MBOX22.MSGID.all = 0x9555AAA6; ECanaMboxes.MBOX23.MSGID.all = 0x9555AAA7; ECanaMboxes.MBOX24.MSGID.all = 0x9555AAA8; ECanaMboxes.MBOX25.

26、MSGID.all = 0x9555AAA9; ECanaMboxes.MBOX26.MSGID.all = 0x9555AAAA; ECanaMboxes.MBOX27.MSGID.all = 0x9555AAAB; ECanaMboxes.MBOX28.MSGID.all = 0x9555AAAC; ECanaMboxes.MBOX29.MSGID.all = 0x9555AAAD; ECanaMboxes.MBOX30.MSGID.all = 0x9555AAAE; ECanaMboxes.MBOX31.MSGID.all = 0x9555AAAF; /配置邮箱015作为发送邮箱,1631作为接收邮箱 /因为在这里写操作是针对整个寄存器而不是某一位,所以不需要映射寄存器组 ECanaRegs.CANMD.all = 0xFFFF0000; /使能所有的邮箱 ECanaRegs.CANME.all = 0x

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1