用STM32执行下面两种滤波代码,那个时间长?

[复制链接]
2321|4
 楼主| jw_andy 发表于 2012-9-27 18:20 | 显示全部楼层 |阅读模式
本帖最后由 jw_andy 于 2012-9-27 18:25 编辑

unsigned short wADC_Voltage_X,wADC_Voltage_Y; // 采样ADC的电压,存储到wADC_Voltage_X,wADC_Voltage_Y为上一次的采样值
  unsigned long dwADCTemp,dwADCTemp1;

第一种计算方法:
  dwADCTemp = wADC_Voltage_X*80 + 48*wADC_Voltage_Y; //放大了128倍
  
第二种计算方法:  
dwADCTemp = wADC_Voltage_X;
dwADCTemp <<=6;
dwADCTemp1 =wADC_Voltage_Y;
dwADCTemp1 <<=5;
dwADCTemp += dwADCTemp1;
dwADCTemp1 =wADC_Voltage_X+wADC_Voltage_Y;
dwADCTemp1 <<=4;
dwADCTemp += dwADCTemp1;

请问是直接用乘法快还是移位快?
zhuyl456 发表于 2012-9-28 08:24 | 显示全部楼层
移位快点,不过现在的处理器的频率很高了,这一点区别不大
figo20042005 发表于 2012-9-28 10:11 | 显示全部楼层
2L说的正确,这个有没有意义得你的系统时钟频率
 楼主| jw_andy 发表于 2012-9-28 14:15 | 显示全部楼层
如果放到ADC采样中断中处理,在频率50K的情况下,20us一个ADC中断,除了采样还要做很多处理,时间非常紧张,用STM32F103处理,区别就有了。
香水城 发表于 2012-9-28 15:29 | 显示全部楼层
用103,其实区别十分小

你两种算法都可以试试,用个GPIO在算法前后翻转一下,用示波器看一下,就可以得到确切的数值
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

47

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部