本文基于合众达的dsp试验箱,采集实验箱上信号发生器产生的信号,并对信号进行fft变换,通过ccs观察结果。
float T; //临时变量T
N2=N1/2; //最高位加1相当于十进制加上最高位的权N1/2 n=N2; //第一个倒序值
for(m=1;m<=N1-2;m++) //第0个和最后一个不倒序 {
if(m<n) //为了避免再次调换,只需对m<n的部分调换顺序 {
T=xr[m];xr[m]=xr[n];xr[n]=T; T=xi[m];xi[m]=xi[n];xi[n]=T; }
k=N2; //最高位权值 while(n>=k) {
n=n-k; //次高位位1,继续上下进位,满2置0 k=(int)(k/2+0.5); //向下权值依次比上级减半 }
n=n+k; //得到下一倒序值 } }
倒序运算函数finv(N1,Xr,Xi),对输入序列倒序,N1为序列长度,Xr[],Xi[]分别为输入序列的实部和虚部。
倒序原理:倒序数的加1是在最高位加1,满2向次高位进1,最高位变0,依次往下。
从当前倒序值可求下一倒序值。
4.9 定时器2
中断子程序及AD转换子程序
interrupt void ad(void) {
IFR=0x0000; //CPU级中断标志寄存器IFR=0,即无CPU级中断请求 PieCtrl.PIEACK.all=0xffff;//PIEACK置1,禁止外部中断向CPU发起中断 //请求 if(adconvover==0){
Ad_data[convcount] = AdcRegs.RESULT0; // 将结果寄存器中的AD //转换结果放到Ad_data数组中 convcount++; //convcount的初始值为0 }
if (convcount==(128)) //即convcount=128,即Ad_data包含采样值的最 //后一位为Ad_data[128] {
convcount=0;
adconvover=1;//接满标志 ,即AD采样结束
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库基于dsp的快速傅里叶变换程序设计(19)在线全文阅读。
相关推荐: