DSP的程序怎么编写完整?

DSP的程序怎么编写完整?,第1张

main()

{

int i

unsigned int * px

unsigned int * py

unsigned int * pz

px=(unsigned int *)0x80000

py=(unsigned int *)0x80100

//-----请按实验要求将程序补充完整-----//

while(1)

{

for(i=0i<16i++)

{

scanf("%d",(px+i))

*(py+i)=0

}

printf("\n")

pz=px

px=py

py=pz

for(i=0i<16i++)

printf("%d",(py+i))

printf("\n")

}

// 在此加软件断点

}

我觉得您应该做以下的事情:1.熟悉2812的事件管理器EVA/EVB,学会编写PWM程序2.将程序通过仿真器LOAD到RAM里运行3.测试波形。但不能将示波器探头直接加在DSP的PWM相关引脚上

何编程语言是难学的,真正的工作中有时候学习一个新语法只有不到一周的时间,语法而言都一样,如果还停留在语法层学习的上面,编写程序的道路你就连门都没有入.

但是后续的 数据结构和算法 稍微要看下书了,开始接触算法了,着和语法没有关系,之所以要先学好语法是为了能看懂用语法描叙的算法,学通了用任何语言来描叙都一样,到了这个阶段的就相当于抬起一条腿准备跨到起跑线一样,但还是没有入门.

到编译原理 和 图灵机 再到 自己编写微型的 *** 作系统 就需要有个老师来引导了

我学软件开发就是从C开始一路由 ->国家数据库3级->程序员->高级程序员->系统分析师考上去然后通过近9年的工作,体会是如果你能够在市面上或者学校里精确买到或者学到的一门知识往往就表示你的层次还是不能让你得兴应手的在行业中创造你能想像的东西,真正的解决问题需要很多本书再加上80%以上的自己创造和理解才能做出来的时候才算真正懂得了你的工作.

一个程序员需要这样的经历

楼上的估计最高学历不过是理工科的一个大学生,应该还没毕业,没有在计算机行业呆过,在做芯片处理的工作中比如DSP芯片设计需要你天天接触算法,但是这和C语言本身有关系吗?傅立叶算法是数学家傅立叶设计出来的数学模型但是不适合做在计算机软件里面(运算量太大了比如离散的傅立叶变换等同于用序列Y(n×1列矢量)乘以n×n矩阵Fn,需要n×n次乘法。若n=1024,则是104,8576次乘法运算。什么概念呢?如果你选用的CPU单周期指令为25ns, 单周期也可以完成一次乘法运算,那么要计算1024点的傅立叶变换则需要26.2144ms,这还不包括加法或其它运算),我给出C算法如下:

void kkfft(double pr[], double pi[], int n, int k, double fr[], double fi[], int l, int il)

{

int it,m,is,i,j,nv,l0

double p,q,s,vr,vi,poddr,poddi

for (it=0it<=n-1it++)

{

m = it

is = 0

for(i=0i<=k-1i++)

{

j = m/2

is = 2*is+(m-2*j)

m = j

}

fr[it] = pr[is]

fi[it] = pi[is]

}

//----------------------------

pr[0] = 1.0

pi[0] = 0.0

p = 6.283185306/(1.0*n)

pr[1] = cos(p)

pi[1] = -sin(p)

if (l!=0)

pi[1]=-pi[1]

for (i=2i<=n-1i++)

{

p = pr[i-1]*pr[1]

q = pi[i-1]*pi[1]

s = (pr[i-1]+pi[i-1])*(pr[1]+pi[1])

pr[i] = p-q

pi[i] = s-p-q

}

for (it=0it<=n-2it=it+2)

{

vr = fr[it]

vi = fi[it]

fr[it] = vr+fr[it+1]

fi[it] = vi+fi[it+1]

fr[it+1] = vr-fr[it+1]

fi[it+1] = vi-fi[it+1]

}

m = n/2

nv = 2

for (l0=k-2l0>=0l0--)

{

m = m/2

nv = 2*nv

for(it=0it<=(m-1)*nvit=it+nv)

for (j=0j<=(nv/2)-1j++)

{

p = pr[m*j]*fr[it+j+nv/2]

q = pi[m*j]*fi[it+j+nv/2]

s = pr[m*j]+pi[m*j]

s = s*(fr[it+j+nv/2]+fi[it+j+nv/2])

poddr = p-q

poddi = s-p-q

fr[it+j+nv/2] = fr[it+j]-poddr

fi[it+j+nv/2] = fi[it+j]-poddi

fr[it+j] = fr[it+j]+poddr

fi[it+j] = fi[it+j]+poddi

}

}

if(l!=0)

for(i=0i<=n-1i++)

{

fr[i] = fr[i]/(1.0*n)

fi[i] = fi[i]/(1.0*n)

}

if(il!=0)

for(i=0i<=n-1i++)

{

pr[i] = sqrt(fr[i]*fr[i]+fi[i]*fi[i])

if(fabs(fr[i])<0.000001*fabs(fi[i]))

{

if ((fi[i]*fr[i])>0)

pi[i] = 90.0

else

pi[i] = -90.0

}

else

pi[i] = atan(fi[i]/fr[i])*360.0/6.283185306

}

return

}

另外,虚机团上产品团购,超级便宜


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7785280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存