KEIL MDK利用STM32的DSP库实现FFT功能注意事项
(2013-09-25 10:41:01)
标签:
it |
1、修改预定义,实现不同采样长度的FFT功能,见红色字体部分;
#define PI2 6.28318530717959
// Comment the lines that you don't want to use.
// 要模拟FFT,请注释掉其他的预定义
// 此处也可以全部注释掉,在MDK的工程属性->"C/C++"->"Preprocessor
Symbols"-"Define:"中添加NPT_XXX项目
// 但是这样做法的缺点是每次修改XXX数据,都会导致MDK下次编译时会编译全部文件,速度太慢。
//#define NPT_64 64
#define NPT_256 256
//#define NPT_1024 1024
// N=64,Fs/N=50Hz,Max(Valid)=1600Hz
// 64点FFt,采样率3200Hz,频率分辨率50Hz,测量最大有效频率1600Hz
#ifdef NPT_64
#define NPT 64
#define Fs
#endif
// N=256,Fs/N=25Hz,Max(Valid)=3200Hz
// 256点FFt,采样率6400Hz,频率分辨率25Hz,测量最大有效频率3200Hz
#ifdef NPT_256
#define NPT 256
#define Fs
#endif
// N=1024,Fs/N=5Hz,Max(Valid)=2560Hz
// 1024点FFt,采样率5120Hz,频率分辨率5Hz,测量最大有效频率2560Hz
#ifdef NPT_1024
#define NPT 1024
#define Fs
#endif
2、对于256和1024点FFT算法,DSP库中汇编语言存在一点小BUG,需要修改;
当使用256或1024点FFT时:
首先将原来的采样点数:
NPT EQU 64
更改为:
NPT EQU 256/1024
将原来汇编代码(keil):
MACRO
更改为:
更改完成后再编译运行,结果与实际测试函数一致。
附:
//256
显示结果:
06000
06198
06396
06593
06787
06980
07169
07354
07535
07711
07882
08047
08206
08359
08504
08643
08774
08898
09014
09123
09224
09317
09403
09481
09553
09617
09674
09725
09770
09809
09843
09872
09896
09916
09932
09945
09955
09963
09969
09973
09976
09978
09979
09980
09981
09983
09985
09987
09991
09995
10000
10006
10013
10020
10028
10037
10046
10055
10064
10072
10080
10086
10091
10094
10096
10094
10090
10083
10072
10057
10039
10016
09988
09955
09917
09874
09825
09772
09712
09647
09577
09501
09420
09333
09242
09147
09047
08943
08835
08724
08610
08494
08376
08257
08137
08016
07896
07776
07657
07541
07426
07314
07205
07099
06998
06900
06808
06720
06637
06559
06487
06421
06360
06304
06255
06210
06171
06137
06108
06083
06062
06046
06032
06022
06015
06009
06005
06002
06000
05997
05994
05990
05984
05977
05967
05953
05937
05916
05891
05862
05828
05789
05744
05695
05639
05578
05512
05440
05362
05279
05191
05099
05001
04900
04794
04685
04573
04458
04342
04223
04103
03983
03862
03742
03623
03505
03389
03275
03164
03056
02952
02852
02757
02666
02579
02498
02422
02352
02287
02227
02174
02125
02082
02044
02011
01983
01960
01942
01927
01916
01909
01905
01904
01905
01908
01913
01919
01927
01935
01944
01953
01962
01971
01979
01986
01993
01999
02004
02008
02012
02014
02016
02018
02019
02020
02021
02023
02026
02030
02036
02044
02054
02067
02083
02103
02127
02156
02190
02229
02274
02325
02382
02446
02518
02596
02682
02775
02876
02985
03101
03225
03356
03495
03640
03793
03952
04117
04288
04464
04645
04830
05019
05212
05406
05603
05801
000-011992
001-004088
002-000992
003-000011
004-000494
005-000008
006-000006
007-000008
008-000006
009-000008
010-000006
011-000008
012-000008
013-000006
014-000010
015-000004
016-000005
017-000004
018-000006
019-000006
020-000004
021-000006
022-000006
023-000004
024-000004
025-000004
026-000006
027-000006
028-000004
029-000004
030-000004
031-000004
032-000004
033-000006
034-000006
035-000006
036-000004
037-000004
038-000004
039-000002
040-000002
041-000002
042-000006
043-000002
044-000006
045-000004
046-000004
047-000000
048-000004
049-000002
050-000004
051-000004
052-000000
053-000002
054-000002
055-000002
056-000002
057-000002
058-000004
059-000002
060-000004
061-000002
062-000004
063-000002
064-000000
065-000002
066-000002
067-000000
068-000002
069-000002
070-000004
071-000002
072-000004
073-000004
074-000002
075-000002
076-000004
077-000004
078-000002
079-000002
080-000004
081-000004
082-000004
083-000004
084-000002
085-000004
086-000004
087-000002
088-000004
089-000004
090-000004
091-000004
092-000002
093-000002
094-000002
095-000004
096-000002
097-000004
098-000004
099-000004
100-000004
101-000004
102-000002
103-000002
104-000002
105-000004
106-000004
107-000002
108-000002
109-000004
110-000002
111-000002
112-000002
113-000002
114-000002
115-000004
116-000000
117-000002
118-000002
119-000002
120-000002
121-000002
122-000004
123-000004
124-000004
125-000002
126-000002
127-000000
128-000000
129-000000
130-000000
131-000000
132-000000
133-000000
134-000000
135-000000
136-000000
137-000000
138-000000
139-000000
140-000000
141-000000
142-000000
143-000000
144-000000
145-000000
146-000000
147-000000
148-000000
149-000000
150-000000
151-000000
152-000000
153-000000
154-000000
155-000000
156-000000
157-000000
158-000000
159-000000
160-000000
161-000000
162-000000
163-000000
164-000000
165-000000
166-000000
167-000000
168-000000
169-000000
170-000000
171-000000
172-000000
173-000000
174-000000
175-000000
176-000000
177-000000
178-000000
179-000000
180-000000
181-000000
182-000000
183-000000
184-000000
185-000000
186-000000
187-000000
188-000000
189-000000
190-000000
191-000000
192-000000
193-000000
194-000000
195-000000
196-000000
197-000000
198-000000
199-000000
200-000000
201-000000
202-000000
203-000000
204-000000
205-000000
206-000000
207-000000
208-000000
209-000000
210-000000
211-000000
212-000000
213-000000
214-000000
215-000000
216-000000
217-000000
218-000000
219-000000
220-000000
221-000000
222-000000
223-000000
224-000000
225-000000
226-000000
227-000000
228-000000
229-000000
230-000000
231-000000
232-000000
233-000000
234-000000
235-000000
236-000000
237-000000
238-000000
239-000000
240-000000
241-000000
242-000000
243-000000
244-000000
245-000000
246-000000
247-000000
248-000000
249-000000
250-000000
251-000000
252-000000
253-000000
254-000000
255-000000