[C] 纯文本查看 复制代码
/*
*********************************************************************************************************
*
* 模块名称 : 主程序模块
* 文件名称 : main.c
* 版 本 : V1.0
* 说 明 : FIR低通滤波器的实现,支持实时滤波
* 实验目的:
* 1. 学习FIR低通滤波器的实现,支持实时滤波
* 实验内容:
* 1. 启动一个自动重装软件定时器,每100ms翻转一次LED2。
* 2. 按下按键K1,打印原始波形数据和滤波后的波形数据。
* 注意事项:
* 1. 打印方式:
* 方式一:
* 默认使用串口打印,可以使用SecureCRT或者H7-TOOL上位机串口助手查看打印信息,
* 波特率115200,数据位8,奇偶校验位无,停止位1。
* 方式二:
* 使用RTT打印,可以使用SEGGE RTT或者H7-TOOL RTT打印。
* MDK AC5,MDK AC6或IAR通过使能bsp.h文件中的宏定义为1即可
* #define Enable_RTTViewer 1
* 2. 务必将编辑器的缩进参数和TAB设置为4来阅读本文件,要不代码显示不整齐。
*
* 修改记录 :
* 版本号 日期 作者 说明
* V1.0 2020-08-01 Eric2013 1. CMSIS软包版本 V5.8.0
* 2. HAL库版本 V1.7.6
*
* Copyright (C), 2020-2030, 安富莱电子 [url]www.armfly.com[/url]
*
*********************************************************************************************************
*/
#include "bsp.h" /* 底层硬件驱动 */
#include "arm_math.h"
#include "arm_const_structs.h"
/* 定义例程名和例程发布日期 */
#define EXAMPLE_NAME "FIR低通滤波器"
#define EXAMPLE_DATE "2021-08-01"
#define DEMO_VER "1.0"
/* 仅允许本文件内调用的函数声明 */
static void PrintfLogo(void);
static void PrintfHelp(void);
static void arm_fir_f32_lp(void);
#define TEST_LENGTH_SAMPLES 4095 /* 采样点数 */
#define BLOCK_SIZE 1 /* 调用一次arm_fir_f32处理的采样点个数 */
#define NUM_TAPS 29 /* 滤波器系数个数 */
uint32_t blockSize = BLOCK_SIZE;
uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE; /* 需要调用arm_fir_f32的次数 */
static float32_t testInput_f32_50Hz_200Hz[TEST_LENGTH_SAMPLES]; /* 采样点 */
static float32_t testOutput[TEST_LENGTH_SAMPLES]; /* 滤波后的输出 */
static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1]; /* 状态缓存,大小numTaps + blockSize - 1*/
/* 低通滤波器系数 通过fadtool获取*/
const float32_t firCoeffs32LP[NUM_TAPS] = {
0.001534370822,-0.001699721906,-0.001334958826, 0.005179324187,-0.001438552048,
-0.01069348957, 0.01213685703, 0.01181853656, -0.03332731873, 0.004219038878,
0.06090350077, -0.06013473868, -0.0847459957, 0.3006878495, 0.5937905908,
0.3006878495, -0.0847459957, -0.06013473868, 0.06090350077, 0.004219038878,
-0.03332731873, 0.01181853656, 0.01213685703, -0.01069348957,-0.001438552048,
0.005179324187,-0.001334958826,-0.001699721906, 0.001534370822
};
uint16_t ADC_SampleBuffer[ ]={
359, 160, 1646, 3478, 4043, 2925, 1093, 37, 610, 2399,
3949, 3766, 2085, 397, 118, 1247, 3147, 4069, 3189, 1290,
49, 533, 2238, 3675, 3925, 2454, 587, 41, 1280, 3137,
4043, 3483, 1645, 214, 336, 2052, 3744, 3964, 2611, 910,
4, 904, 2826, 4064, 3483, 1773, 276, 123, 1661, 3489,
3967, 2861, 959, 24, 766, 2450, 4018, 3679, 2084, 359,
148, 1574, 3327, 4063, 3182, 1268, 62, 563, 2429, 3914,
25, 918, 2771, 4068, 3501, 1675, 178, 311, 1878, 3449,
4077, 2848, 934, 0, 891, 2761, 3967, 3791, 2045, 341,
169, 1644, 3486, 4040, 2943, 1298, 19, 602, 2439, 3917,
3731, 2123, 461, 42, 1270, 3184, 4077, 3222, 1275, 64,
485, 2046, 3770, 3938, 2455, 569, 33, 1206, 3033, 4090,
3419, 1667, 163, 333, 2034, 3730, 3965, 2852, 913, 5,
912, 2820, 4043, 3455, 1829, 350, 176, 1696, 3496, 4030,
2843, 985, 27, 594, 2444, 3938, 3758, 2070, 351, 137,
1522, 3167, 4063, 3192, 1270, 58, 566, 2331, 3839, 3944,
2439, 614, 51, 1291, 3160, 4095, 3295, 1645, 166, 354,
2047, 3694, 3938, 2537, 741, 0, 903, 2836, 4057, 3552,
1714, 184, 263, 1647, 3492, 4080, 2834, 912, 26, 833,
2669, 3984, 3785, 2075, 364, 137, 1632, 3474, 4085, 3181,
1284, 90, 553, 2457, 3924, 3788, 2220, 607, 21, 1257,
3188, 4077, 3197, 1338, 105, 333, 2066, 3675, 3947, 2472,
629, 28, 1117, 2864, 4052, 3458, 1700, 160, 324, 1974,
3657, 4082, 2777, 927, 0, 887, 2806, 4005, 3617, 2050,
342, 174, 1627, 3525, 4030, 2907, 1069, 40, 598, 2448,
3933, 3784, 2085, 402, 72, 1288, 3185, 4085, 3192, 1318,
25, 571, 2269, 3766, 3945, 2472, 610, 38, 1254, 3140,
4023, 3455, 1627, 163, 352, 2052, 3742, 3959, 2633, 911,
0, 908, 2806, 4059, 3530, 1709, 242, 158, 1644, 3483,
4076, 2878, 969, 9, 773, 2445, 3952, 3756, 2054, 335,
149, 1590, 3327, 4063, 3177, 1271, 41, 589, 2422, 3887,
3836, 2444, 592, 40, 1261, 3190, 3999, 3328, 1436, 166,
329, 2053, 3776, 3898, 2496, 657, 23, 918, 2767, 4055,
3487, 1678, 145, 323, 1869, 3469, 4022, 2811, 946, 2,
893, 2765, 3965, 3766, 2029, 358, 139, 1640, 3453, 4082,
2982, 1243, 45, 598, 2429, 3950, 3760, 1209, 3053, 4019,
3419, 1696, 160, 339, 2016, 3730, 3935, 2852, 909, 62,
900, 2829, 4044, 3525, 1830, 326, 152, 1728, 3504, 4042,
2861, 973, 6, 591, 2429, 3968, 3749, 2065, 364, 128,
1483, 3172, 4094, 3145, 1285, 56, 559, 2386, 3861, 3937,
2463, 612, 55, 1243, 3171, 4079, 3277, 1645, 187, 353,
2058, 3745, 3948, 2509, 758, 0, 915, 2852, 4045, 3483,
1700, 222, 223, 1696, 3500, 4045, 2837, 926, 4, 801,
2660, 3986, 3738, 2052, 394, 137, 1636, 3450, 4066, 3163,
1261, 82, 555, 2451, 3915, 3812, 2230, 555, 53, 1262,
3182, 4084, 3218, 1307, 108, 358, 1990, 3785, 3931, 2445,
646, 19, 1116, 2809, 4046, 3485, 1627, 170, 325, 1976,
3639, 4041, 2858, 913, 4, 918, 2779, 4068, 3604, 1995,
331, 160, 1654, 3467, 3951, 2944, 1028, 65, 624, 2457,
3929, 3762, 2078, 404, 77, 1280, 3206, 4085, 3179, 1277,
49, 555, 2276, 3734, 3915, 2457, 605, 96, 1234, 3168,
4084, 3490, 1664, 161, 341, 2034, 3762, 3919, 2633, 928,
20, 919, 2825, 4040, 3510, 1691, 228, 112, 1602, 3520,
4057, 2852, 941, 52, 731, 2466, 3835, 3737, 2130, 312,
158, 1572, 3364, 4086, 3217, 1284, 82, 586, 2397, 3906,
3820, 2452, 602, 42, 1216, 3163, 4087, 3256, 1435, 157,
355, 2011, 3840, 3962, 2482, 668, 34, 889, 2852, 4052,
3519, 1661, 168, 326, 1867, 3469, 3967, 2834, 919, 2,
889, 2788, 4023, 3675, 2069, 345, 153, 1654, 3488, 4066,
2990, 1284, 60, 529, 2450, 3949, 3759, 2134, 475, 37,
1261, 3181, 4094, 3198, 1293, 80, 465, 2046, 3739, 3949,
2454, 616, 53, 1198, 3028, 4022, 3483, 1647, 191, 339,
2040, 3707, 3995, 2853, 934, 0, 893, 2836, 3988, 3551,
1823, 341, 157, 1682, 3529, 4056, 2857, 973, 25, 614,
2443, 3913, 3693, 1247, 3168, 4074, 3312, 1653, 147, 341,
2066, 3737, 3940, 2550, 739, 14, 909, 2835, 4054, 3517,
1673, 185, 256, 1654, 3510, 3995, 2860, 928, 5, 854,
2678, 3929, 3701, 2104, 321, 178, 1612, 3472, 4059, 3183,
1270, 43, 596, 2445, 3921, 3769, 2230, 577, 45, 1257,
3161, 4077, 3206, 1330, 100, 323, 2047, 3844, 3984, 2473,
616, 19, 1128, 2852, 4064, 3493, 1660, 172, 336, 1995,
3615, 4064, 2831, 918, 13, 926, 2823, 4050, 3589, 2049,
355, 167, 1637, 3478, 4059, 2897, 1062, 4, 617, 2464,
3925, 3764, 2015, 347, 124, 1265, 3188, 4070, 3225, 1318,
57, 566, 2274, 3754, 3894, 2468, 587, 47, 1254, 3074,
4095, 3455, 1682, 123, 360, 2025, 3725, 3963, 2608, 916,
0, 917, 2803, 4057, 3515, 1721, 247, 147, 1650, 3496,
4041, 2870, 923, 14, 786, 2452, 3944, 3766, 2015, 349,
158, 1576, 3365, 4094, 3176, 1275, 64, 646, 2386, 3887,
3838, 2438, 595, 32, 1255, 3200, 4071, 3239, 1462, 105,
379, 2064, 3775, 3945, 2497, 673, 10, 934, 2853, 4082,
3520, 1673, 185, 301, 1865, 3455, 4086, 2793, 937, 8,
892, 2719, 4033, 3711, 2031, 358, 147, 1636, 3472, 4068,
2998, 1183, 62, 581, 2434, 3938, 3766, 2121, 469, 89,
1303, 3099, 4095, 3197, 1285, 66, 505, 2084, 3757, 3917,
2480, 597, 30, 1195, 2975, 4068, 3492, 1666, 183, 315,
2052, 3718, 3978, 2856, 893, 28, 863, 2827, 4041, 3525,
1827, 342, 161, 1661, 3514, 4054, 2834, 1001, 21, 599,
2450, 3931, 3711, 2082, 368, 128, 1470, 3163, 4093, 3202,
1243, 32, 575, 2367, 3862, 3949, 2474, 603, 26, 1247,
3141, 4047, 3306, 1641, 160, 344, 2047, 3735, 3953, 2517,
754, 0, 893, 2823, 4072, 3501, 1688, 220, 251, 1645,
3500, 4082, 2850, 935, 16, 845, 2684, 4040, 74, 1241,
3173, 4086, 3211, 1354, 96, 352, 2012, 3840, 3927, 2458,
603, 36, 1126, 2889, 4031, 3497, 1601, 214, 354, 2024,
3609, 4040, 2850, 915, 2, 893, 2751, 4072, 3597, 2056,
349, 160, 1627, 3437, 4064, 2907, 1037, 78, 579, 2468,
3935, 3739, 2097, 387, 41, 1279, 3171, 4086, 3174, 1306,
62, 527, 2322, 3695, 3958, 2424, 621, 58, 1213, 3119,
4022, 3437, 1690, 154, 341, 2082, 3736, 3965, 2614, 914,
18, 893, 2826, 4084, 3502, 1738, 255, 148, 1714, 3419,
4066, 2860, 940, 24, 785, 2437, 3941, 3762, 2011, 367,
153, 1568, 3381, 4095, 3173, 1298, 19, 589, 2450, 3905,
3803, 2461, 589, 43, 1267, 3147, 4091, 3233, 1428, 167,
350, 2028, 3766, 3835, 2459, 676, 16, 895, 2834, 4030,
3521, 1661, 154, 255, 1891, 3492, 4052, 2854, 895, 0,
897, 2816, 4004, 3705, 2053, 331, 179, 1617, 3469, 4058,
2984, 1243, 64, 609, 2450, 3944, 3760, 2113, 496, 11,
1284, 3181, 4086, 3206, 1328, 68, 482, 2043, 3808, 3919,
2454, 584, 39, 1199, 3028, 4030, 3498, 1662, 161, 332,
2034, 3679, 3979, 2860, 946, 0, 928, 2830, 4043, 3557,
1846, 356, 164, 1636, 3498, 4082, 2779, 992, 41, 595,
2438, 3954, 3777, 2092, 390, 150, 1498, 3149, 4082, 3161,
1279, 33, 578, 2346, 3850, 3930, 2447, 606, 63, 1252,
3161, 4087, 3302, 1627, 160, 390, 2080, 3727, 3984, 2523,
748, 32, 908, 2828, 4022, 3529, 1661, 146, 271, 1657,
3465, 4058, 2852, 918, 0, 850, 2666, 3914, 3777, 2053,
338, 156, 1615, 3456, 4057, 3149, 1274, 27, 588, 2448,
3941, 3766, 2185, 627, 51, 1253, 3180, 4086, 3209, 1356,
113, 329, 2070, 3776, 3949, 2468, 623, 46, 1088, 2848,
4064, 3513, 1701, 114, 329, 1995, 3640, 4041, 2853, 895,
34, 887, 2827, 4017, 110, 1261, 3186, 4095, 3181, 1261,
49, 521, 2267, 3739, 3917, 2482, 584, 56, 1222, 3106,
4059, 3439, 1698, 171, 333, 2032, 3727, 3958, 2587, 928,
18, 893, 2779, 4084, 3519, 1730, 262, 145, 1644, 3453,
4047, 2839, 934, 24, 784, 2441, 3915, 3693, 2064, 357,
160, 1560, 3355, 4077, 3254, 1253, 54, 614, 2395, 3941,
3853, 2386, 597, 54, 1245, 3218, 4089, 3199, 1427, 167,
388, 1951, 3737, 3941, 2475, 651, 12, 902, 2783, 4066,
3508, 1649, 191, 316, 1922, 3487, 4030, 2889, 884, 14,
876, 2738, 4041, 3711, 2034, 341, 166, 1616, 3437, 4064,
2990, 1247, 98, 600, 2444, 3935, 3767, 2121, 461, 84,
1248, 3146, 4095, 3189, 1279, 69, 534, 2011, 3752, 3927,
2443, 621, 102, 1145, 3044, 4053, 3469, 1664, 155, 333,
2031, 3711, 3949, 2864, 915, 0, 889, 2823, 4034, 3584,
1837, 370, 176, 1646, 3469, 4034, 2876, 969, 9, 626,
2395, 3940, 3757, 2061, 351, 143, 1470, 3147, 4093, 3180,
1263, 62, 562, 2366, 3861, 3929, 2412, 575, 18, 1261,
3134, 4043, 3380, 1689, 164, 369, 2015, 3679, 3963, 2528,
790, 0, 920, 2840, 4013, 3510, 1688, 225, 225, 1628,
3514, 4033, 2838, 944, 8, 861, 2647, 3917, 3731, 2029,
390, 123, 1609, 3432, 4082, 3216, 1259, 54, 589, 2486,
3944, 3791, 2220, 592, 32, 1260, 3216, 4043, 3183, 1343,
112, 348, 2025, 3766, 3895, 2457, 650, 23, 1116, 2779,
3990, 3512, 1609, 184, 309, 1974, 3615, 4057, 2841, 928,
0, 905, 2795, 3963, 3628, 2075, 321, 160, 1629, 3492,
4022, 2907, 1081, 23, 607, 2402, 3956, 3757, 2080, 420,
75, 1296, 3190, 4091, 3181, 1298, 31, 555, 2338, 3667,
3965, 2442, 608, 46, 1234, 3137, 4077, 3476, 1650, 180,
339, 2015, 3721, 3929, 2605, 912, 3, 919, 2817, 4082,
137, 1565, 3375, 4057, 3180, 1277, 48, 571, 2441, 3942,
3803, 2464, 596, 27, 1261, 3163, 4059, 3197, 1410, 164,
319, 2043, 3709, 3986, 2489, 653, 26, 919, 2836, 4035,
3455, 1696, 141, 299, 1869, 3477, 4066, 2834, 857, 20,
890, 2719, 4005, 3709, 2015, 331, 169, 1674, 3490, 4050,
2984, 1261, 52, 597, 2454, 3933, 3776, 2144, 456, 42,
1243, 3173, 4022, 3163, 1312, 64, 484, 2050, 3735, 3941,
2482, 587, 41, 1256, 3017, 4065, 3498, 1644, 157, 350,
1956, 3722, 3993, 2828, 934, 0, 898, 2809, 4040, 3537,
1824, 333, 166, 1621, 3437, 4080, 2863, 985, 17, 614,
2443, 3839, 3840, 2058, 367, 131, 1497, 3170, 4095, 3189,
1298, 26, 588, 2376, 3968, 3934, 2429, 624, 18, 1280,
3172, 4090, 3273, 1661, 158, 349, 2038, 3739, 3965, 2521,
768, 0, 913, 2832, 4056, 3510, 1667, 200, 270, 1629,
3494, 4071, 2827, 930, 26, 825, 2651, 3944, 3728, 2061,
384, 99, 1619, 3454, 4059, 3202, 1280, 50, 569, 2445,
3964, 3781, 2203, 616, 42, 1183, 3163, 4076, 3207, 1365,
72, 339, 2057, 3741, 3934, 2454, 635, 32, 1103, 2827,
4049, 3496, 1682, 170, 303, 1961, 3625, 4082, 2835, 902,
7, 881, 2809, 3949, 3602, 2050, 326, 153, 1636, 3478,
4059, 2916, 1061, 38, 613, 2437, 3920, 3777, 2085, 384,
65, 1316, 3173, 4090, 3190, 1243, 60, 542, 2282, 3753,
3917, 2482, 603, 25, 1238, 3113, 4059, 3485, 1631, 153,
333, 2052, 3720, 3978, 2617, 891, 8, 952, 2774, 4069,
3520, 1705, 259, 141, 1666, 3455, 3967, 2855, 927, 18,
778, 2415, 3986, 3744, 2055, 353, 146, 1549, 3375, 4086,
3209, 1280, 45, 583, 2418, 3890, 3829, 2435, 607, 32,
1215, 3145, 4076, 3242, 1446, 131, 351, 2055, 3758, 3934,
2482, 672, 32, 914, 2806, 4070, 112, 1661, 3464, 4064,
2998, 1260, 54, 556, 2449, 3936, 3751, 2132, 480, 5,
1284, 3220, 4031, 3226, 1292, 86, 473, 2048, 3711, 3984,
2488, 617, 2, 1149, 3035, 4066, 3474, 1667, 171, 350,
1997, 3730, 3979, 2890, 917, 0, 907, 2811, 4077, 3584,
1813, 350, 178, 1625, 3533, 4085, 2855, 960, 13, 601,
2482, 3892, 3754, 2046, 372, 133, 1486, 3147, 4077, 3218,
1243, 44, 584, 2386, 3845, 3986, 2441, 611, 38, 1231,
3149, 4086, 3279, 1647, 149, 362, 2021, 3745, 3953, 2503,
762, 0, 959, 2848, 4042, 3510, 1673, 204, 300, 1603,
3455, 4058, 2777, 941, 51, 859, 2651, 3924, 3750, 2055,
349, 149, 1622, 3419, 4063, 3196, 1266, 48, 593, 2409,
3940, 3790, 2215, 606, 42, 1262, 3163, 4077, 3218, 1349,
95, 342, 2054, 3707, 3965, 2486, 612, 39, 1093, 2834,
4038, 3483, 1647, 172, 321, 1988, 3583, 4035, 2793, 941,
48, 916, 2793, 4027, 3596, 2061, 383, 109, 1656, 3496,
4033, 2920, 1039, 48, 605, 2415, 3968, 3746, 2093, 432,
81, 1284, 3135, 4070, 3205, 1290, 53, 562, 2265, 3725,
3935, 2444, 610, 9, 1229, 3125, 4042, 3477, 1646, 156,
355, 2009, 3745, 3935, 2597, 950, 0, 927, 2829, 4030,
3481, 1735, 245, 132, 1654, 3510, 4051, 2875, 928, 19,
770, 2449, 3940, 3770, 2039, 358, 156, 1549, 3428, 4077,
3183, 1273, 19, 618, 2387, 3912, 3828, 2447, 612, 36,
1247, 3181, 4095, 3229, 1442, 137, 333, 2058, 3746, 3970,
2505, 637, 71, 901, 2826, 4022, 3532, 1714, 181, 315,
1873, 3467, 4045, 2831, 911, 5, 868, 2738, 3970, 3760,
2060, 351, 141, 1658, 3455, 4045, 3008, 1250, 72, 597,
2423, 3903, 3785, 2149, 482, 0, 1279, 3185, 4076, 3222,
1317, 57, 492, 2044, 3754, 3954, 2458, 618, 39, 1177,
3037, 4068, 134, 1647, 3478, 4040, 2881, 953, 21, 621,
2443, 3918, 3766, 1999, 396, 118, 1473, 3165, 4077, 3200,
1252, 64, 574, 2377, 3881, 3940, 2482, 592, 52, 1253,
3099, 4093, 3346, 1658, 180, 327, 2086, 3776, 3966, 2522,
740, 16, 898, 2885, 4061, 3501, 1663, 191, 288, 1644,
3504, 4022, 2853, 927, 17, 845, 2676, 3968, 3785, 2060,
374, 155, 1636, 3447, 4074, 3174, 1286, 13, 620, 2448,
3903, 3801, 2221, 624, 39, 1252, 3192, 4059, 3191, 1350,
82, 352, 2037, 3749, 3942, 2453, 633, 30, 1110, 2783,
3983, 3506, 1689, 161, 331, 1965, 3634, 4059, 2880, 953,
20, 829, 2777, 3966, 3613, 2029, 370, 123, 1641, 3500,
4041, 2906, 1069, 14, 608, 2469, 3923, 3741, 2088, 399,
106, 1296, 3161, 4095, 3181, 1298, 43, 568, 2212, 3752,
3934, 2447, 608, 62, 1179, 3154, 4031, 3520, 1645, 173,
350, 2025, 3766, 3977, 2591, 932, 0, 886, 2870, 4041,
3519, 1760, 256, 150, 1651, 3498, 4064, 2841, 946, 34,
762, 2445, 3954, 3723, 2080, 409, 132, 1570, 3378, 4059,
3180, 1298, 37, 585, 2422, 3839, 3876, 2454, 618, 57,
1251, 3149, 4082, 3227, 1423, 165, 343, 2038, 3733, 3964,
2476, 665, 44, 888, 2848, 4023, 3521, 1686, 155, 317,
1849, 3489, 4023, 2815, 914, 0, 889, 2788, 4001, 3762,
2066, 339, 160, 1598, 3456, 4071, 2998, 1243, 47, 589,
2450, 3903, 3771, 2130, 459, 28, 1261, 3183, 4089, 3206,
1275, 71, 509, 2070, 3762, 3953, 2461, 617, 51, 1169,
3053, 4046, 3504, 1654, 178, 333, 1983, 3708, 4010, 2826,
873, 18, 902, 2821, 4040, 3570, 1755, 349, 157, 1648,
3437, 3999, 2811, 985, 21, 603, 2450, 3935, 3739, 2093,
370, 136, 1478, 3179, 4077, 3222, 1275, 38, 580, 2404,
3862, 3968, 2445, 619, 25, 1248, 3162, 4084, 262, 1627,
3471, 4010, 2837, 903, 0, 845, 2706, 3803, 3856, 2068,
350, 141, 1611, 3437, 4083, 3099, 1301, 40, 576, 2448,
3919, 3771, 2178, 612, 45, 1243, 3159, 4086, 3236, 1350,
96, 338, 2011, 3763, 3807, 2479, 633, 16, 1108, 2854,
4043, 3552, 1702, 128, 294, 1971, 3657, 4068, 2848, 920,
0, 885, 2813, 4023, 3596, 2057, 370, 135, 1674, 3449,
4040, 2960, 1051, 27, 621, 2453, 3913, 3766, 2015, 393,
100, 1275, 3168, 4086, 3217, 1312, 46, 561, 2258, 3750,
3942, 2399, 588, 61, 1240, 3137, 4095, 3487, 1637, 173,
346, 2048, 3840, 3948, 2610, 939, 0, 928, 2840, 4036,
3510, 1728, 229, 170, 1648, 3490, 4031, 2815, 949, 15,
751, 2450, 3948, 3766, 2082, 341, 146, 1591, 3355, 4077,
3222, 1241, 72, 592, 2397, 3914, 3834, 2438, 635, 55,
1302, 3147, 4077, 3273, 1453, 139, 357, 2050, 3732, 3914,
2488, 662, 32, 927, 2848, 4044, 3510, 1627, 216, 324,
1830, 3517, 4022, 2779, 941, 48, 886, 2776, 4006, 3760,
2011, 365, 151, 1643, 3445, 4055, 2976, 1298, 16, 607,
2448, 3931, 3750, 2131, 448, 98, 1235, 3185, 4081, 3179,
1270, 102, 484, 2068, 3739, 3973, 2448, 647, 61, 1202,
3017, 4077, 3504, 1611, 177, 329, 2036, 3712, 3990, 2812,
920, 0, 928, 2834, 4057, 3529, 1840, 338, 177, 1627,
3453, 4086, 2921, 997, 71, 590, 2431, 3976, 3776, 2045,
328, 124, 1477, 3163, 4077, 3222, 1232, 44, 582, 2335,
3876, 3986, 2435, 613, 43, 1248, 3134, 4059, 3333, 1649,
177, 345, 2020, 3762, 3931, 2524, 734, 28, 921, 2837,
4029, 3508, 1686, 185, 260, 1666, 3474, 4041, 2861, 930,
9, 848, 2651, 3949, 3741, 2037, 368, 141, 1632, 3450,
4067, 3145, 1275, 41, 594, 2448, 3839, 3795, 2236, 593,
40, 1282, 3163, 4077, 345, 1951, 3646, 4041, 2811, 928,
50, 867, 2783, 4013, 3574, 2043, 313, 170, 1636, 3478,
4047, 2905, 1084, 1, 593, 2441, 3941, 3766, 2079, 414,
89, 1280, 3177, 4093, 3191, 1252, 70, 539, 2287, 3749,
3946, 2448, 607, 38, 1229, 3138, 4080, 3493, 1639, 182,
321, 2061, 3750, 3956, 2604, 930, 0, 933, 2854, 4030,
3480, 1736, 233, 166, 1627, 3483, 4050, 2848, 958, 15,
776, 2466, 3968, 3733, 2066, 346, 178, 1592, 3347, 4081,
3135, 1273, 45, 583, 2424, 3914, 3830, 2419, 608, 38,
1257, 3188, 4095, 3265, 1444, 151, 347, 2064, 3785, 3949,
2494, 664, 6, 907, 2870, 4041, 3437, 1645, 167, 299,
1867, 3483, 4042, 2838, 907, 6, 944, 2761, 3999, 3750,
2039, 358, 210, 1655, 3423, 4064, 2996, 1266, 53, 619,
2453, 3948, 3759, 2111, 475, 27, 1290, 3211, 4095, 3187,
1293, 64, 489, 2066, 3762, 3927, 2471, 625, 48, 1203,
3090, 4030, 3518, 1610, 161, 346, 2000, 3692, 4022, 2811,
924, 11, 891, 2852, 4022, 3584, 1823, 339, 159, 1645,
3510, 4050, 2885, 970, 39, 589, 2454, 3931, 3752, 2043,
370, 131, 1481, 3218, 4059, 3198, 1263, 61, 595, 2378,
3876, 3945, 2461, 612, 48, 1243, 3147, 4095, 3313, 1651,
166, 337, 2066, 3739, 3956, 2521, 744, 6, 907, 2848,
4059, 3451, 1696, 208, 267, 1643, 3506, 4057, 2843, 932,
12, 857, 2665, 3948, 3753, 1992, 385, 136, 1632, 3389,
4085, 3202, 1260, 62, 585, 2461, 3895, 3784, 2229, 585,
70, 1243, 3181, 4077, 3232, 1342, 90, 335, 2011, 3749,
3986, 2472, 629, 25, 1114, 2829, 4022, 3529, 1645, 175,
351, 1887, 3625, 4045, 2848, 918, 20, 901, 2801, 4033,
3609, 2052, 364, 139, 1645, 3506, 4080, 2909, 1067, 59,
616, 2464, 3940, 3711, 2066, 399, 123, 1238, 3216, 4091,
363, 2015, 3766, 3931, 2660, 901, 13, 902, 2852, 4086,
3529, 1764, 252, 148, 1666, 3481, 4059, 2852, 946, 15,
795, 2448, 3916, 3766, 2011, 364, 160, 1577, 3371, 4095,
3184, 1270, 33, 571, 2431, 3934, 3793, 2469, 607, 31,
1274, 3155, 4079, 3254, 1419, 204, 343, 2031, 3756, 3986,
2508, 671, 0, 927, 2852, 4037, 3510, 1627, 194, 271,
1873, 3516, 4042, 2866, 942, 0, 895, 2742, 3967, 3769,
2048, 347, 147, 1644, 3476, 4047, 3000, 1258, 55, 596,
2413, 3933, 3762, 2144, 479, 44, 1241, 3190, 4086, 3214,
1308, 62, 479, 2085, 3766, 3949, 2465, 620, 54, 1167,
3053, 4026, 3506, 1611, 163, 338, 1997, 3730, 4004, 2817,
914, 0, 889, 2779, 3967, 3525, 1821, 363, 163, 1648,
3485, 4059, 2853, 979, 0, 612, 2464, 3961, 3768, 2061,
390, 113, 1473, 3280, 4045, 3216, 1285, 57, 594, 2368,
3830, 3839, 2441, 608, 40, 1247, 3160, 4077, 3350, 1622,
190, 340, 2050, 3733, 3938, 2540, 744, 0, 879, 2852,
4056, 3509, 1685, 197, 264, 1618, 3499, 4074, 2849, 909,
24, 896, 2697, 3921, 3739, 2052, 371, 148, 1650, 3449,
4059, 3183, 1270, 55, 593, 2413, 4018, 3739, 2272, 623,
30, 1270, 3163, 4090, 3213, 1359, 111, 355, 2052, 3766,
3978, 2468, 599, 29, 1100, 2866, 4059, 3503, 1729, 128,
307, 1965, 3625, 3999, 2829, 918, 0, 907, 2850, 4050,
3616, 2080, 359, 120, 1652, 3493, 4064, 2892, 1073, 39,
597, 2450, 3931, 3749, 2069, 414, 104, 1284, 3219, 4085,
3198, 1298, 32, 557, 2370, 3728, 3968, 2456, 614, 35,
1229, 3122, 4059, 3508, 1647, 146, 347, 2015, 3674, 3959,
2597, 893, 7, 927, 2827, 4050, 3510, 1663, 264, 178,
1609, 3510, 4051, 2856, 943, 11, 786, 2450, 3946, 3746,
2041, 380, 154, 1556, 3376, 4031, 336, 2031, 3748, 3915,
2465, 674, 0, 917, 2831, 4047, 3493, 1682, 159, 313,
1865, 3506, 4026, 2835, 909, 14, 859, 2765, 3995, 3727,
2029, 355, 169, 1639, 3481, 4030, 2971, 1312, 35, 601,
2438, 3941, 3761, 2089, 490, 42, 1262, 3210, 4063, 3181,
1299, 35, 500, 1992, 3784, 3946, 2429, 646, 16, 1193,
3037, 4051, 3504, 1649, 163, 320, 2007, 3748, 3989, 2830,
918, 0, 912, 2821, 4045, 3518, 1801, 349, 166, 1652,
3506, 4050, 2881, 973, 62, 598, 2436, 3931, 3757, 2102,
339, 136, 1469, 3179, 4091, 3181, 1318, 44, 558, 2389,
3873, 3924, 2454, 588, 27, 1224, 3162, 4085, 3305, 1682,
164, 332, 2050, 3719, 3913, 2509, 742, 0, 916, 2811,
4068, 3507, 1674, 196, 262, 1645, 3510, 4048, 2815, 911,
4, 848, 2651, 3949, 3762, 2066, 346, 164, 1617, 3445,
4054, 3190, 1301, 9, 568, 2449, 3917, 3779, 2219, 598,
34, 1257, 3188, 4059, 3209, 1325, 112, 320, 2084, 3762,
3946, 2453, 621, 54, 1097, 2829, 4084, 3510, 1655, 183,
332, 1965, 3613, 4026, 2779, 909, 10, 902, 2790, 4041,
3616, 2082, 338, 158, 1651, 3483, 4076, 2946, 1051, 46,
606, 2466, 3930, 3744, 2102, 379, 116, 1261, 3202, 4079,
3174, 1275, 56, 566, 2267, 3709, 3994, 2443, 617, 40,
1246, 3145, 4078, 3493, 1653, 166, 348, 2038, 3738, 3935,
2612, 918, 4, 901, 2834, 4059, 3558, 1747, 207, 155,
1636, 3510, 4043, 2815, 937, 0, 771, 2395, 3931, 3753,
2037, 353, 173, 1574, 3323, 4077, 3218, 1256, 48, 595,
2416, 3913, 3877, 2482, 614, 24, 1257, 3149, 4086, 3227,
1430, 147, 348, 2043, 3693, 3992, 2456, 633, 36, 919,
2809, 4040, 3447, 1645, 186, 299, 1876, 3437, 4064, 2852,
934, 11, 901, 2816, 3997, 3731, 2047, 368, 84, 1627,
3482, 4022, 483, 2041, 3695, 3986, 2427, 603, 61, 1196,
3040, 4030, 3449, 1647, 209, 361, 1975, 3693, 3951, 2866,
901, 8, 893, 2820, 4046, 3539, 1819, 374, 159, 1659,
3499, 4064, 2868, 973, 32, 591, 2482, 3902, 3786, 2057,
375, 129, 1482, 3163, 4077, 3195, 1234, 42, 585, 2373,
3853, 3986, 2456, 619, 36, 1252, 3200, 4092, 3332, 1666,
138, 362, 2049, 3727, 3940, 2521, 736, 12, 928, 2767,
4068, 3510, 1682, 197, 260, 1664, 3494, 4037, 2866, 907,
18, 854, 2663, 3917, 3766, 2031, 356, 160, 1605, 3444,
4063, 3163, 1252, 28, 593, 2456, 3911, 3766, 2203, 604,
51, 1266, 3183, 4094, 3199, 1307, 104, 346, 2011, 3677,
3937, 2464, 620, 37, 1120, 2832, 4045, 3499, 1650, 173,
314, 1965, 3712, 4050, 2826, 915, 2, 891, 2820, 4022,
3648, 2077, 358, 154, 1674, 3391, 4029, 2893, 1061, 38,
598, 2439, 3933, 3766, 2041, 408, 85, 1243, 3180, 4091,
3200, 1277, 35, 549, 2304, 3744, 3925, 2439, 605, 54,
1217, 3113, 4084, 3455, 1654, 163, 347, 2052, 3762, 3935,
2574, 912, 18, 889, 2864, 4086, 3472, 1742, 249, 157,
1652, 3500, 4022, 2809, 952, 16, 786, 2425, 3968, 3784,
2058, 353, 162, 1561, 3323, 4077, 3208, 1271, 43, 610,
2395, 3940, 3803, 2468, 614, 39, 1263, 3184, 4077, 3250,
1444, 172, 345, 2041, 3737, 3946, 2478, 641, 22, 932,
2832, 3993, 3473, 1665, 167, 318, 1867, 3452, 4095, 2808,
909, 0, 889, 2757, 4004, 3746, 2011, 357, 199, 1631,
3437, 4026, 2971, 1280, 48, 600, 2394, 3986, 3789, 2136,
460, 47, 1275, 3170, 4095, 3197, 1295, 66, 496, 2011,
3695, 3902, 2454, 585, 28, 1167, 3049, 4068, 3455, 1664,
158, 348, 2010, 3707, 4024, 2765, 928, 50, 862, 2795,
4049, 3529, 1791, 294, 125, 1621, 3483, 40, 578, 2432,
3884, 4018, 2464, 618, 32, 1244, 3131, 4087, 3319, 1652,
174, 331, 2034, 3728, 3931, 2540, 754, 0, 930, 2815,
4057, 3508, 1698, 185, 249, 1667, 3506, 4059, 2829, 946,
0, 856, 2671, 3900, 3766, 1993, 347, 156, 1631, 3459,
4073, 3173, 1286, 19, 576, 2428, 3970, 3784, 2197, 608,
39, 1266, 3163, 4061, 3221, 1340, 98, 333, 2052, 3746,
3938, 2458, 615, 36, 1114, 2779, 4065, 3508, 1653, 118,
352, 1973, 3646, 4022, 2811, 950, 0, 920, 2820, 4031,
3574, 2029, 318, 128, 1661, 3491, 4058, 2871, 1068, 54,
585, 2413, 3986, 3714, 2082, 409, 100, 1330, 3103, 4063,
3103, 1316, 54, 552, 2294, 3739, 3917, 2486, 585, 42,
1252, 3200, 4061, 3490, 1645, 203, 353, 2048, 3726, 3958,
2616, 897, 0, 905, 2834, 4041, 3506, 1707, 235, 155,
1645, 3528, 4064, 2852, 950, 0, 777, 2399, 3933, 3756,
2057, 360, 151, 1563, 3371, 4089, 3167, 1278, 37, 604,
2408, 3901, 3827, 2464, 599, 24, 1286, 3163, 4061, 3181,
1430, 156, 345, 2011, 3739, 4020, 2480, 662, 24, 909,
2866, 4043, 3487, 1647, 173, 305, 1920, 3504, 4052, 2811,
928, 0, 888, 2784, 4011, 3749, 2050, 338, 149, 1632,
3470, 4064, 2993, 1266, 0, 613, 2447, 3927, 3766, 2113,
466, 0, 1275, 3181, 4093, 3202, 1318, 53, 508, 2037,
3748, 3968, 2426, 630, 16, 1197, 3006, 4023, 3529, 1666,
137, 341, 2048, 3705, 3990, 2809, 914, 25, 918, 2779,
4049, 3574, 1771, 347, 162, 1639, 3508, 4059, 2870, 981,
27, 608, 2447, 3894, 3766, 2043, 356, 166, 1473, 3154,
4063, 3236, 1277, 38, 578, 2373, 3904, 3933, 2450, 624,
84, 1216, 3149, 4079, 3312, 1627, 172, 390, 1987, 3675,
3957, 2528, 734, 18, 905, 2830, 4094, 3498, 1736, 189,
261, 1672, 3491, 4053, 602, 2413, 3895, 3785, 2216, 599,
34, 1282, 3167, 4059, 3173, 1344, 108, 370, 2043, 3707,
3927, 2469, 621, 33, 1102,
};
/*
*********************************************************************************************************
* 函 数 名: arm_fir_f32_lp
* 功能说明: 调用函数arm_fir_f32_lp实现低通滤波器
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
static void arm_fir_f32_lp(void)
{
uint32_t i;
arm_fir_instance_f32 S;
float32_t *inputF32, *outputF32;
/* 初始化输入输出缓存指针 */
inputF32 = &testInput_f32_50Hz_200Hz[0];
outputF32 = &testOutput[0];
/* 初始化结构体S */
arm_fir_init_f32(&S,
NUM_TAPS,
(float32_t *)&firCoeffs32LP[0],
&firStateF32[0],
blockSize);
/* 实现FIR滤波,这里每次处理1个点 */
for(i=0; i < numBlocks; i++)
{
arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize);
}
/* 打印滤波后结果 */
for(i=0; i<TEST_LENGTH_SAMPLES; i++)
{
printf("%f, %f\r\n", testOutput[i], inputF32[i]);
}
}
/*
*********************************************************************************************************
* 函 数 名: main
* 功能说明: c程序入口
* 形 参: 无
* 返 回 值: 错误代码(无需处理)
*********************************************************************************************************
*/
int main(void)
{
uint8_t ucKeyCode; /* 按键代码 */
uint16_t i;
bsp_Init(); /* 硬件初始化 */
PrintfLogo(); /* 打印例程信息到串口1 */
PrintfHelp(); /* 打印操作提示信息 */
for(i=0; i<TEST_LENGTH_SAMPLES; i++)
{
/* 50Hz正弦波+200Hz正弦波,采样率1KHz */
testInput_f32_50Hz_200Hz[i] = ADC_SampleBuffer[i];
}
bsp_StartAutoTimer(0, 100); /* 启动1个100ms的自动重装的定时器 */
/* 进入主程序循环体 */
while (1)
{
bsp_Idle(); /* 这个函数在bsp.c文件。用户可以修改这个函数实现CPU休眠和喂狗 */
if (bsp_CheckTimer(0)) /* 判断定时器超时时间 */
{
/* 每隔100ms 进来一次 */
bsp_LedToggle(2); /* 翻转LED的状态 */
}
ucKeyCode = bsp_GetKey(); /* 读取键值, 无键按下时返回 KEY_NONE = 0 */
if (ucKeyCode != KEY_NONE)
{
switch (ucKeyCode)
{
case KEY_DOWN_K1: /* K1键按下 */
arm_fir_f32_lp();
break;
default:
/* 其它的键值不处理 */
break;
}
}
}
}
/*
*********************************************************************************************************
* 函 数 名: PrintfHelp
* 功能说明: 显示操作提示菜单
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
static void PrintfHelp(void)
{
printf("1. 启动一个自动重装软件定时器,每100ms翻转一次LED2\r\n");
printf("2. 按下按键K1,打印原始波形数据和滤波后的波形数据\r\n");
printf("数组大小 = %d\r\n", sizeof(ADC_SampleBuffer)/2);
}
/*
*********************************************************************************************************
* 函 数 名: PrintfLogo
* 功能说明: 打印例程名称和例程发布日期, 接上串口线后,打开PC机的超级终端软件可以观察结果
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
static void PrintfLogo(void)
{
printf("*************************************************************\n\r");
/* 检测CPU ID */
{
uint32_t CPU_Sn0, CPU_Sn1, CPU_Sn2;
CPU_Sn0 = *(__IO uint32_t*)(0x1FFF7A10);
CPU_Sn1 = *(__IO uint32_t*)(0x1FFF7A10 + 4);
CPU_Sn2 = *(__IO uint32_t*)(0x1FFF7A10 + 8);
printf("\r\nCPU : STM32F407IGT6, LQFP176, 主频: %dMHz\r\n", SystemCoreClock / 1000000);
printf("UID = %08X %08X %08X\n\r", CPU_Sn2, CPU_Sn1, CPU_Sn0);
}
printf("\n\r");
printf("*************************************************************\n\r");
printf("* 例程名称 : %s\r\n", EXAMPLE_NAME); /* 打印例程名称 */
printf("* 例程版本 : %s\r\n", DEMO_VER); /* 打印例程版本 */
printf("* 发布日期 : %s\r\n", EXAMPLE_DATE); /* 打印例程日期 */
/* 打印ST的HAL库版本 */
printf("* HAL库版本 : V1.7.6 (STM32F407 HAL Driver)\r\n");
printf("* \r\n"); /* 打印一行空格 */
printf("* QQ : 1295744630 \r\n");
printf("* 旺旺 : armfly\r\n");
printf("* Email : [email]armfly@qq.com[/email] \r\n");
printf("* 微信公众号: armfly_com \r\n");
printf("* 淘宝店: armfly.taobao.com\r\n");
printf("* Copyright [url]www.armfly.com[/url] 安富莱电子\r\n");
printf("*************************************************************\n\r");
}
/***************************** 安富莱电子 [url]www.armfly.com[/url] (END OF FILE) *********************************/