芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密

飞芯科技提供芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密逆向服务

芯片复制STM32 ADC采样的十种滤波加程序

  1. 芯片复制#include "led.h"
  2. 芯片复制#include "delay.h"
  3. 芯片复制#include "sys.h"
  4. #include "usart.h"
  5. #include "lcd.h"
  6. #include "adc.h"
  7. #include "usartbo.h"

  8. u16 ftable[255] = {
  9.         2048, 2098, 2148, 2198, 2248, 2298, 2348, 2398, 2447, 2496,
  10. 2545, 2594, 2642, 2690, 2737, 2785, 2831, 2877, 2923, 2968,
  11. 3013, 3057, 3100, 3143, 3185, 3227, 3267, 3307, 3347, 3385,
  12. 3423, 3460, 3496, 3531, 3565, 3598, 3631, 3662, 3692, 3722,
  13. 3750, 3778, 3804, 3829, 3854, 3877, 3899, 3920, 3940, 3958,
  14. 3976, 3992, 4007, 4021, 4034, 4046, 4056, 4065, 4073, 4080,
  15. 4086, 4090, 4093, 4095, 4095, 4095, 4093, 4090, 4086, 4080,
  16. 4073, 4065, 4056, 4046, 4034, 4021, 4007, 3992, 3976, 3958,
  17. 3940, 3920, 3899, 3877, 3854, 3829, 3804, 3778, 3750, 3722,
  18. 3692, 3662, 3631, 3598, 3565, 3531, 3496, 3460, 3423, 3385,
  19. 3347, 3307, 3267, 3227, 3185, 3143, 3100, 3057, 3013, 2968,
  20. 2923, 2877, 2831, 2785, 2737, 2690, 2642, 2594, 2545, 2496,
  21. 2447, 2398, 2348, 2298, 2248, 2198, 2148, 2098, 2047, 1997,
  22. 1947, 1897, 1847, 1797, 1747, 1697, 1648, 1599, 1550, 1501,
  23. 1453, 1405, 1358, 1310, 1264, 1218, 1172, 1127, 1082, 1038,
  24. 995, 952, 910, 868, 828, 788, 748, 710, 672, 635,
  25. 599, 564, 530, 497, 464, 433, 403, 373, 345, 317,
  26. 291, 266, 241, 218, 196, 175, 155, 137, 119, 103,
  27. 88, 74, 61, 49, 39, 30, 22, 15, 9, 5,
  28. 2, 0, 0, 0, 2, 5, 9, 15, 22, 30,
  29. 39, 49, 61, 74, 88, 103, 119, 137, 155, 175,
  30. 196, 218, 241, 266, 291, 317, 345, 373, 403, 433,
  31. 464, 497, 530, 564, 599, 635, 672, 710, 748, 788,
  32. 828, 868, 910, 952, 995, 1038, 1082, 1127, 1172, 1218,
  33. 1264, 1310, 1358, 1405, 1453, 1501, 1550, 1599, 1648, 1697,
  34. 1747, 1797, 1847, 1897, 1947
  35. };

  36. int a=0;
  37. int b=1;
  38. /*//////////////////////////////////////////////////////////////////////////
  39. 方法一:限幅滤波法
  40. 方法:根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断:
  41.       如果本次值与上次值之差<=A,则本次值有效,
  42.       如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。
  43. 优点:能克服偶然因素引起的脉冲干扰
  44. 缺点:无法抑制周期性的干扰,平滑度差
  45. //////////////////////////////////////////////////////////////////////////*/

  46. #define  A 51
  47. u16 Value1;

  48. u16 filter1()
  49. {
  50.   u16 NewValue;
  51.         Value1 = ftable[b-1];
  52.   NewValue = ftable[b];
  53.         b++;
  54.         a++;
  55.         if(a==255) a=0;
  56.         if(b==255) b=1;
  57.   if(((NewValue - Value1) > A) || ((Value1 - NewValue) > A))
  58.         {
  59.                 print_host(ftable[a],NewValue);
  60.     return NewValue;
  61.         }
  62.   else
  63.         {
  64.                  print_host(ftable[a],Value1);
  65.      return Value1;
  66.         }
  67. }

  68. /*//////////////////////////////////////////////////////////////////////////
  69. 方法二:中位值滤波法
  70. 方法: 连续采样N次(N取奇数),把N次采样值按大小排列,取中间值为本次有效值。
  71. 优点:克服偶然因素(对温度、液位的变化缓慢的被测参数有良好的滤波效果)
  72. 缺点:对流量、速度等快速变化的参数不宜
  73. //////////////////////////////////////////////////////////////////////////*/
  74. #define N 3

  75. u16 value_buf[N];
  76. u16 filter2()
  77. {  
  78.   u16 count,i,j,temp;
  79.   for(count=0;count<N;count++)
  80.   {
  81.     value_buf[count] =  ftable[a];
  82.           a++;
  83.           if(a==255) a=0;
  84.   }
  85.         for (j=0;j<N-1;j++)
  86.         {
  87.                  for (i=0;i<N-j;i++)
  88.                  {
  89.                         if ( value_buf[i] >  value_buf[i+1] )
  90.                         {
  91.                          temp = value_buf[i];
  92.                          value_buf [i]= value_buf[i+1];
  93.                          value_buf[i+1] = temp;
  94.                         }
  95.                  }
  96.         }
  97. //        printf("%d\n",value_buf[(N-1)/2]);
  98.         return value_buf[(N-1)/2];
  99. }
  100. void pros2()
  101. {
  102.    print_host(4,filter2());
  103. }
  104. /*//////////////////////////////////////////////////////////////////////////
  105. 方法三:算术平均滤波法
  106. 方法:连续取N个采样值进行算术平均运算:( N值的选取:一般流量,N=12;压力:N=4。)
  107.       N值较大时:信号平滑度较高,但灵敏度较低;
  108.       N值较小时:信号平滑度较低,但灵敏度较高;     
  109. 优点:适用于对一般具有随机干扰的信号进行滤波;这种信号的特点是有一个平均值,信号在某一数值范围附近上下波动
  110. 缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用,比较浪费RAM。
  111. ////////////////////////////////////////////////////////////////////////*/

  112. #define N 5
  113. u16 filter3()
  114. {
  115.         u16 sum = 0,count;
  116.         for ( count=0;count<N;count++)
  117.         {
  118.                 sum = sum+ ftable[a];
  119.                 a++;
  120.                 if(a==255) a=0;
  121.         }
  122.         print_host(4,sum/N);
  123. //        printf("%d\n",sum/N);
  124.         return (sum/N);
  125. }



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.taihedz.cn
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信